我想在由用戶輸入和部分外鍵指定的部分ID組成的SQL表中設置一個屬性。例如:員工將有一個8字符長的ID,前4位是用戶將輸入的部分,最後4個字符將引用分支表以使用分部ID。外鍵在表屬性中檢查約束條件
它看起來像我需要使用CHECK約束來做到這一點,但我不確定如何強制執行屬性值的第二部分以確保它在另一個表中。
我希望Thq問題正確表達,因爲我仍然在學習SQL。
我想在由用戶輸入和部分外鍵指定的部分ID組成的SQL表中設置一個屬性。例如:員工將有一個8字符長的ID,前4位是用戶將輸入的部分,最後4個字符將引用分支表以使用分部ID。外鍵在表屬性中檢查約束條件
它看起來像我需要使用CHECK約束來做到這一點,但我不確定如何強制執行屬性值的第二部分以確保它在另一個表中。
我希望Thq問題正確表達,因爲我仍然在學習SQL。
它看起來像我需要爲了做到這一點, 使用CHECK約束,但我不能確定如何執行屬性 值的第二部分,以確保它在其他表。
爲了「看」到另一個表中,您需要在CHECK約束中使用SELECT語句。據我所知,大多數SQL DBMS不會讓你這樣做。 (否則,標準SQL將使用斷言;我不確定任何 SQL dbms支持斷言。)
而是使用兩列 - 一列用於用戶提供的四個字符,另一列用於最後四個字符代表分支。你可以(也應該)使用
行爲可以保證外鍵約束條件給你很重要。他們保證,無論你在新表中使用branch_id的值是否存在於分支表中,並且如果使用的branch_id發生了變化,那麼這些變化也會記錄在新表中。 (如果級聯更新)。如果將這兩個值捆綁到一個列中,則不會得到這些保證。
最後4個字符將引用分支表以使用 分支標識。
你可以拷貝這樣的分支id,但你不能引用它。 參考是數據庫設計中的一個技術術語;它必須處理外鍵引用。
什麼是_「SQL屬性」_? – gdoron
「*,最後4個字符將引用分支表*」:永遠不會將兩個不同的東西存儲到一個列中。將4位用戶輸入放入一列,並將分支表的引用放入另一列。混合兩種不同的東西**會導致長期的麻煩。 –