2013-12-08 158 views
-1

我有一個表,它的主鍵是5個表中的外鍵。我需要更改此主鍵字段的值。什麼是查詢?更新在一個表中的主鍵是另一個表中的外鍵

   Table1 >> fields: tbl1ID(pk, bigint), Desc(nvarchar(50)) 
      Table2 >> fields: tbl2ID(pk, bigint),tbl1ID(fk, bigint), Desc(nvarchar(50)) 
      Table3 >>.... 
      . 
      . 
      . 

我設置tbl1ID = 1,現在我需要改變它像這樣tbl1ID = 100001, 但我不能,因爲這個領域是關係到另一個表。

是否有可能改變它們全部?

+0

我們需要看到表結構來更好地理解你需要改變以及如何改變這個「主關鍵字段的價值」。 – cerd

回答

0

您可以通過在您的會話中暫時設置foreign_key_checks = 0來做到這一點。

SET FOREIGN_KEY_CHECKS = 0; 
UPDATE TABLE_A INNER JOIN TABLE_B ON TABLE_B.PKID = TABLE_A.PKID 
SET TABLE_B.PKID = 'NEW_VALUE', TABLE_A.PKID = 'NEW_VALUE' 
WHERE TABLE_A.PKID = 'OLD_VALUE'; 

另一種選擇是配置與ON UPDATE CASCADE選項外鍵,這樣,如果主鍵是父 表更新,它會級聯到子表

相關問題