![](/img/trans.png)
[英]SQL, How do I add a column which needs to be a primary key, unique and auto-incrementing? Error says syntax error at or near "IDENTITY"
[英]Why do I get a foreign key not unique error on an identity column?
如果我尝试在 PostgreSQL 14.3 中创建两个这样的表:
CREATE TABLE IF NOT EXISTS foo (
id INT4 GENERATED BY DEFAULT AS IDENTITY (INCREMENT BY 1 MINVALUE -2147483648 START -2147483648),
foo TEXT UNIQUE NOT NULL
);
CREATE TABLE IF NOT EXISTS bar (
id INT4 GENERATED BY DEFAULT AS IDENTITY (INCREMENT BY 1 MINVALUE -2147483648 START -2147483648),
foo_id INT4 NOT NULL REFERENCES foo(id)
);
我得到这个 output:
$ psql test -f bug01.sql
CREATE TABLE
psql:bug01.sql:9: ERROR: there is no unique constraint matching given keys for referenced table "foo"
我认为GENERATED BY DEFAULT AS IDENTITY
会满足唯一性约束。 我错过了什么? 我该如何解决这个问题?
更新:应用 Bergi 的回答和评论,我向每个标识列添加了一个主键约束并解决了问题:
CREATE TABLE IF NOT EXISTS foo (
id INT4 PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (INCREMENT BY 1 MINVALUE -2147483648 START -2147483648),
foo TEXT UNIQUE NOT NULL
);
CREATE TABLE IF NOT EXISTS bar (
id INT4 PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (INCREMENT BY 1 MINVALUE -2147483648 START -2147483648),
foo_id INT4 NOT NULL REFERENCES foo(id)
);
$ psql test -f bug01.sql
CREATE TABLE
CREATE TABLE
谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.