Mysql
為 SQL 中的表創建添加約束
我必須創建一個包含元素 P、PType、PName、Price 和 Origin 的表 Product。
我需要約束所有具有 PType“肉類”的產品必須將“歐洲”作為原產地。我想在更改表中添加約束,但我看到使用更改表意味著在創建原始表後對其進行修改,但我需要在創建表時具有此條件。我不知道如何寫這個約束,有人可以給我提示嗎?
在 MySQL 8 (>= 8.0.16 ) 你可以使用
CHECK CONSTRAINT
在舊版本中,您需要一個
INSERT/UPDATE TRIGGER
也就是說,您還應該規範化您的表並使用查找(或參考/幫助)表來獲取 Origin id 和 Type id。
CREATE TABLE Product ( P INT , PType varchar(19) , PName varchar(20) , Price DECIMAL(8,2) , Origin varchar(50) , CONSTRAINT CHK_type CHECK ((Ptype = 'meat' AND Origin ='Europe') OR Ptype <> 'meat' ) );
INSERT INTO Product VALUES (1,'meat','Kobe Beef',10000.00,'Japan')
違反檢查約束“CHK_type”。
INSERT INTO Product VALUES (1,'apple','Breaburn',10.00,'New Zealand')
✓
db<>在這裡擺弄