Person Table
-------------------------------------
PersonId | Name | Surname |
-------------------------------------
1 John Smith
2 Sam Rainbow
Address Table
------------------------------------------
AddressId | PersonId | Address |
------------------------------------------
1 1 AAA
2 1 BBB所以我想做的是,如果我执行下面的查询,
DELETE Person WHERE PersonId = 1SQL不应允许我从Person表中删除,因为Address表中有与该Person相关的行。
我怎样才能建立这种关系?
发布于 2014-01-14 08:41:48
您需要定义一个外键:
ALTER TABLE Address
ADD FOREIGN KEY (PersonId)
REFERENCES Person (PersonId) 发布于 2014-01-14 08:55:43
添加外键约束并限制删除:
ALTER TABLE Address
ADD CONSTRAINT Address_PersonId_fkey
FOREIGN KEY (PersonId)
REFERENCES Person (PersonId)
ON DELETE RESTRICT -- what you asked for
ON UPDATE CASCADE; -- maybe do something different for updates?发布于 2014-01-14 08:42:30
你可以试试这个:
DELETE Address WHERE PersonId = 1在那之后
DELETE Person WHERE PersonId = 1也可以在地址表中引用。
ALTER TABLE Address
ADD FOREIGN KEY (PersonId)
REFERENCES Person (PersonId) https://stackoverflow.com/questions/21109017
复制相似问题