我有journal
CREATE TABLE "public"."journal" (
"id" "public"."inc_journal" NOT NULL,
"short_desc" varchar(20),
"description" varchar(1000),
"default_gl_account_id" int8,
"company_id" int2,
"creator_user_id" int4,
"created_date" timestamp(6),
"type" "public"."journal_type",
CONSTRAINT "journal_pkey" PRIMARY KEY ("id")
)
WITH (OIDS=FALSE)
;
inc_journal的def是这样的序列:
CREATE SEQUENCE "public"."inc_journal"
INCREMENT 1
MINVALUE 1
MAXVALUE 4294967295
START 1
CACHE 1;
我希望像这样设置一个外键:
ALTER TABLE "public"."entry"
ADD FOREIGN KEY ("journal_id") REFERENCES "public"."journal" ("id");
然而,当我这样做时,我收到一个错误:
[Err] ERROR:外键约束“entry_journal_id_fkey”无法实现
详细信息:键列“journal_id”和“id”属于不兼容的类型:integer和inc_journal。
如何摆脱此错误?
我是否需要将journal_id
设置为inc_journal
?我还想在字段中插入null
,所以这似乎不是正确的选择。
答案 0 :(得分:4)
尝试为您的PKey使用字段类型serial
,或
id integer NOT NULL DEFAULT nextval('inc_journal')
这将为您的PKey创建/使用序列。然后,您可以FKey所需的任何整数字段。另请参阅http://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-SERIAL。
答案 1 :(得分:0)
如果您正在使用Sequerize ORM并出现错误,请尝试以下操作。
我犯了一个错误,其中<button onclick = "changeBg()">Change Background colour</button>
<script>
function changeBg() {
if (document.body.style.backgroundColor == "red") {
document.body.style.backgroundColor = "green";
}
else if (document.body.style.backgroundColor != "green") {
document.body.style.backgroundColor = "red";
}
}
</script>
表的Foreign key field
与product
表的Primary key field
具有不同的类型。当我匹配类型时,它就可以了!
示例
user