CREATE table orders ( order_ID integer PRIMARY KEY,product_no integer REFERENCES products (product_no),quantity integer);
我没有在任何地方看到FOREIGN KEY;但是,在其他几个堆栈溢出问题(例如How to add “on delete cascade” constraints?)中,我看到了FOREIGN KEY写的.是否有必要写FOREIGN KEY或是否只需要使用REFERENCES?
这是一个很好的问题.您将注意到doc中与DDL约束相关的示例中的FOREIGN KEY约束.我更喜欢使用FOREIGN KEY约束,如下面的例3所示.
你可以用不同的方式做外键/引用:
父表
CREATE table products ( product_no integer PRIMARY KEY,name text,price numeric);
儿童桌 – Ex1
内联外键约束而不提及FOREIGN KEY
CREATE table orders ( order_ID integer PRIMARY KEY,quantity integer);
要么
儿童桌 – Ex2
请注意,父表和子表应具有相同的列名以使用此简明表示法.
CREATE table orders ( order_ID integer PRIMARY KEY,product_no integer REFERENCES products,quantity integer);
要么
儿童桌 – Ex3
请注意,我们在此处明确使用FOREIGN KEY关键字.
CREATE table orders ( order_ID integer PRIMARY KEY,product_no integer,quantity integer,FOREIGN KEY (product_no) REFERENCES products (product_no),);
如果需要约束多个字段,FOREIGN KEY约束也可以这样写:
CREATE table t1 ( a integer PRIMARY KEY,b integer,c integer,FOREIGN KEY (b,c) REFERENCES other_table (c1,c2));
这些示例来自文档.
sql小提琴示例:http://sqlfiddle.com/#!15/dd2d6
总结以上是内存溢出为你收集整理的在PostgreSQL中,外键约束只需要REFERENCES吗?全部内容,希望文章能够帮你解决在PostgreSQL中,外键约束只需要REFERENCES吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)