我將從一個例子開始,以便清楚我想要問什麼。如何跟蹤不同表中的ID(主)?
Templates
template_id, Name
1, Light Blue
2, Red
3, Sky Blue
4, Yellow
template_id是主要和自動增量。
Products
product_id, product_name, template_id
。
Users
user_id, user_name, template_id
。
Categories
category_id, category_name, template_id
還有6個表格更像這樣引用template_id。
的默認 template_id在所有這些表是零(這意味着沒有模板分配)
我需要的方式在一些地方保存這些引用,這樣,如果我嘗試刪除模板我的PHP應用程序會檢查它是否在使用中。我知道這是一種外鍵概念,但我不確定在外鍵列中是否可以有零值,所以我感覺有點卡住了。你有什麼建議來解決這個問題?如何跟蹤模板ID在不同表格中的使用位置?
UPDATE
我嘗試作爲建議增加外鍵...
ALTER TABLE `Templates`
ADD CONSTRAINT `Templates_ibfk_1`
FOREIGN KEY (`template_id`) REFERENCES `Products` (`template_id`),
ADD CONSTRAINT `Templates_ibfk_2`
FOREIGN KEY (`template_id`) REFERENCES `Users` (`template_id`)
我在哪裏可以檢查是否這些都增加?我嘗試使用PhpMyAdmin查看Templates表的結構,但在那裏找不到任何提及外鍵的東西?
不要在產品/用戶/類別中爲template_id使用'0'值,請使用'null';那麼使用外鍵約束就沒有問題了 – 2014-09-01 13:15:22
是的,我可以更改爲Null。但是你是否說在使用外鍵之後將其改爲NULL?你能舉個例子嗎? – TigerTiger 2014-09-01 13:17:10
我__am__說改爲null後使用外鍵約束;那麼如果你試圖刪除一個使用的模板,這個約束會阻止你這樣做 – 2014-09-01 13:18:56