如何解决最好在PostgreSQL中使用SERIAL PRIMARY KEY或GENERATED ALWAYS AS IDENTITY作为主键
不确定哪个选项是最新的最佳实践?我在本教程上读到以下内容:
https://www.postgresqltutorial.com/postgresql-identity-column/
Postgresql版本10引入了新约束GENERATED AS IDENTITY,可让您自动为一个 列。
GENERATED AS IDENTITY约束符合sql标准 好的旧SERIAL列的变体。
在示例中,他们使用身份作为主键:
CREATE TABLE color (
color_id INT GENERATED ALWAYS AS IDENTITY,color_name VARCHAR NOT NULL
);
当您按照以下内容引用此表的FOREIGN KEY时:
CREATE TABLE pallet (
id INT GENERATED ALWAYS AS IDENTITY,color_1 REFERENCES color
color_2 REFERENCES color
);
是否知道身份现在是主键?:
解决方法
是否知道身份现在是主键?
否(serial
也不会这样做)。
您需要明确定义主键:
CREATE TABLE color (
color_id INT primary key GENERATED ALWAYS AS IDENTITY,color_name VARCHAR NOT NULL
);
不确定哪个选项是最新的最佳实践?
建议使用identity
代替serial
。
对于新应用程序,应改为使用标识列。
为什么不串行?
串行类型具有一些奇怪的行为,这些行为使架构,依赖关系和权限管理变得不必要地麻烦。
最后,标识列符合SQL标准,而serial
是PostgreSQL方言。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。