[英]Can I constraint an AutoIncremented column not to accept values from outside?
我有一個AutoIncremented列(ID),並且我希望有一個約束,只有數據庫才能填充此列。 有約束嗎?
我認為沒有聲明性約束可以做到這一點。
您可以使用觸發器進行操作,例如:
DELIMITER //
CREATE TRIGGER ForceId BEFORE INSERT ON MyTable
FOR EACH ROW
BEGIN
SET NEW.id = DEFAULT;
END //
DELIMITER ;
我剛剛在MySQL 5.1.41上進行了測試,它似乎可以正常工作。 如果我在INSERT
語句中為id
指定一個值,它將忽略我的值並生成一個新的代理鍵值。
INSERT INTO MyTable (id, name) VALUES (DEFAULT, 'Bill');
INSERT INTO MyTable (id, name) VALUES (123, 'John');
SELECT * FROM MyTable;
+----+-------+
| id | name |
+----+-------+
| 1 | bill |
| 2 | john |
+----+-------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.