我在数据库中有两个表。第一个是
CREATE TABLE persons
(
P_Id int NOT NULL,
LastName varchar(30) NOT NULL,
FirstName varchar(30),
Address varchar(200),
City varchar(20),
PRIMARY KEY (P_Id)
)
,第二个是
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
我的问题是,一旦Persons表中的主键(P_Id)得到更新,有可能在Orders表中自动更新FOREIGN KEY(P_Id)的值。 谢谢。
答案 0 :(得分:1)
你的第二张桌子应该是
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id),
ON UPDATE CASCADE
)
这意味着当更新父ID时,“ON UPDATE CASCADE”将执行相同的操作。
答案 1 :(得分:0)
通过在表人员上使用更新后触发器可以轻松实现上述提及。 请做..
在更新后的dbo.persons上创建触发器trgUpdatePersonsPIDinOrders AS Begin声明@OP_ID Int,@ NP_ID Int选择@OP_ID = Deleted.P_ID From Deleted选择@NP_ID = Inserted.P_ID From 插入如果@OP_ID<> @NP_ID然后 更新DBO.Orders设置P_ID = @NP_ID其中P_ID = @OP_ID结束
愿它能帮到你 感谢