如何自动更新外键值

时间:2016-10-13 11:24:48

标签: mysql

我在数据库中有两个表。第一个是

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)的值。 谢谢。

2 个答案:

答案 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结束

愿它能帮到你 感谢