我需要在創建表Order時添加一個約束,以便欄位的唯一組合存在于另一個表中。
Table: Product
productId PRIMARY KEY
productNumber
和,
Table: Order
clientId FOREIGN KEY
productId FOREIGN KEY
productNumber
dateBorrowed
dateReturned
我有兩張表Product和Order。productId和productNumber創建一個唯一的組合來指定一個產品,因為可能存在同一產品的多個版本。在Order表中輸入值時, productId和productNumber的唯一組合必須存在于Product表中,允許重復,因為專案可以在以后回傳和再次借用。我不確定在創建Order表時如何對約束進行編碼,希望一切都有意義。
示例資料:產品
| 產品編號 | 產品編號 |
|---|---|
| 123 | 1 |
| 123 | 2 |
| 675 | 1 |
桌子
| 客戶 ID | 產品編號 | 產品編號 | 借來的日期 | 回傳日期 |
|---|---|---|---|---|
| 10 | 123 | 1 | 1979 | 1989 |
| 10 | 123 | 1 | 1990 | 2000 |
| 12 | 675 | 1 | 2022 | 2022 |
| 07 | 123 | 2 | 1982年 | 2022 |
uj5u.com熱心網友回復:
您描述的欄位的唯一組合實際上是主鍵:
CREATE TABLE Product(
productId INTEGER,
productNumber INTEGER,
...
PRIMARY KEY (productId, productNumber)
);
您可以在Order表中參考它:
CREATE TABLE "Order"(
...
productId INTEGER,
productNumber INTEGER,
...
FOREIGN KEY(productId, productNumber) REFERENCES Product(productId, productNumber)
);
請注意 Order 表名必須加引號,ORDER是一個 SQLite 關鍵字。還必須啟用外鍵:
PRAGMA foreign_keys = ON;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/516103.html
標籤:sqlsqlite
