繁体   English   中英

我可以约束AutoIncremented列不接受来自外部的值吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM