给出table1
上的以下主键定义(请注意列的顺序):
ALTER TABLE "table1" ADD PRIMARY KEY ("f1", "f4", "f2", "f3");
进一步在table2
上给出了以下外键定义(请注意列的顺序):
ALTER TABLE "table2"
ADD CONSTRAINT "const1"
FOREIGN KEY ("f1","f2","f3","f4")
REFERENCES "table1" ("f1","f2","f3","f4");
第一个问题
特别是关于以下行:
FOREIGN KEY ("f1","f2","f3","f4")
列的顺序通常应与主键定义中的列顺序完全相同,如果是,为什么?会在table2
上为此创建索引吗?
第二个问题
特别是关于以下行:
REFERENCES "table1" ("f1","f2","f3","f4");
列的顺序是否需要与table1
上主键定义中的顺序匹配,或者这无关紧要,为什么?
谢谢
答案 0 :(得分:0)
是的,复合外键中的列应与父表中主键中的相应列具有相同的顺序。如果不是,则约束将无法按您预期的那样工作。不,不会自动在table2
上创建索引,但是如果可以帮助您进行某些查询,则可以创建一个索引。