簡體   English   中英

設置外鍵的默認值?

[英]Setting default value of foreign key?

我在數據庫中有三個表:

user (user_id(pk), username, email, password, country_code(fk), city_id(fk));

country (country_code(pk), country name);

city (city_id(pk), city_name);

國家和城市表格已經填充了詳細信息。 用戶表是空白的。 對於每條記錄,所有表都具有默認值“none”。

我有一個簡單的界面,要求注冊電子郵件和密碼。

因此,當用戶輸入電子郵件和密碼時,mysql不允許插入。 它顯示以下錯誤:

Cannot add or update a child row: a foreign key constraint fails

這是因為user表不能插入country_codecity_id中不在countrycity表中的任何值。 並且用戶尚未給出值,默認值為none,這兩個父表中都沒有。

那么,如何處理誠信? 我應該將NULL作為子表( user )中兩個外鍵的默認值嗎? 我嘗試給出默認值NULL並且它正在工作。 我想知道,如果它不會對我的數據庫設計中的完整性問題造成任何麻煩? 這是一種正確的方式嗎?

通過這些設計,您只需為表countrycity添加“ (無) ”記錄即可。

這樣,您就有兩個“ 魔術值 ”, country_codecity_id與這個' (無) '記錄相關,在用戶表的新條目中用作country_code(fk)city_id(fk)的默認值。

您還可以為country_codecity_id避免“ magics ”(我的意思是特殊含義的常量值),只為country_namecity_name選擇硬連線' (none) '值,並通過country_name上的where條件選擇相應的主鍵和city_name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM