Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL。是否可以自定义默认命名?_Postgresql_Naming Conventions - Fatal编程技术网

PostgreSQL。是否可以自定义默认命名?

PostgreSQL。是否可以自定义默认命名?,postgresql,naming-conventions,Postgresql,Naming Conventions,我们有长期使用的内部db命名约定。例如:索引的后缀为“_ix”,外键为“_fk” 这些约定与索引的“_idx”和外键的“_fkey”相冲突 比如说。如果我创建了索引,但没有像这样显式地定义索引名在(id)上创建索引然后我会得到这样的索引名:a\u id\u idx。但根据我们的约定,不仅用于postgresql,还必须有a_id_ix 最好的方法是更改自动生成的命名模式以匹配我们的约定。看起来应该很简单,但我不知道怎么做 有什么解决方案吗?在某些情况下,我无法定义明确的名称。例如:对于串行列类型

我们有长期使用的内部db命名约定。例如:索引的后缀为“_ix”,外键为“_fk”

这些约定与索引的“_idx”和外键的“_fkey”相冲突

比如说。如果我创建了索引,但没有像这样显式地定义索引名
在(id)上创建索引然后我会得到这样的索引名:a\u id\u idx。但根据我们的约定,不仅用于postgresql,还必须有a_id_ix

最好的方法是更改自动生成的命名模式以匹配我们的约定。看起来应该很简单,但我不知道怎么做


有什么解决方案吗?

在某些情况下,我无法定义明确的名称。例如:对于串行列类型,postgresql生成名为{table_name}{column_name}}{seq的序列,但我需要{table_name}}{seq。@keddok:是的,您可以:
创建序列一些表};创建表some_table(id integer default nextval('some_table_seq'));更改某个表id拥有的某个表的顺序谢谢,@a_horse_,没有名字。但是要知道还有其他的方法。我不想反对使用串行类型,它很方便。我只想更改postgresql中的默认值。@keddok:然后你需要更改Postgres源代码并编译自己的版本。如果你想要非默认名称,请设置非默认名称。[我仍然认为这是个坏主意,但是]
ALTER INDEX[IF EXISTS]name RENAME为new_name
@CraigRinger,我之所以能够更改默认值,有两个原因:1。有一个名为{table_name}{column_name}{u seq的串行类型(非常方便)生成序列,如果没有手动序列创建2,我无法显式定义名称。如果有其他选择,禁止使用自动生成是错误的。但是如果我不能在全局级别更改postgres默认值,那么我可能必须在我们的约定中添加一些规则,禁止使用串行类型和其他一些功能。您不能更改PostgreSQL名称的生成。
CREATE INDEX index_name ON a (id);