gpt4 book ai didi

mysql - 在插入 mysql 表之前进行验证

转载 作者:行者123 更新时间:2023-11-29 06:35:55 25 4
gpt4 key购买 nike

在我的 MySQL 表中添加约束以拒绝相同类型的第三次插入的最有效方法是什么?

CREATE TABLE `stack_over_t` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`data` varchar(45) NOT NULL,
`category` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
)

enter image description here

理想情况下,我想阻止类别 = 1 的插入(插入之前触发?),因为已经有两个类别 1 的条目。我该如何执行此操作?我可以将其扩展到多于一列吗?

最佳答案

如果您使用触发器,则可以或者您可以设置客户端和服务器端验证。

DELIMITER $$

CREATE TRIGGER example_before_insert_allow_only_one_active
BEFORE INSERT ON stack_over_t FOR EACH ROW
BEGIN
IF (SELECT COUNT(id) FROM stack_over_t
WHERE id=NEW.id AND data=NEW.data) > 0
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot add or update row: only one active row allowed per type';
END IF;
END;
$$

CREATE TRIGGER example_before_update_allow_only_one_active
BEFORE UPDATE ON stack_over_t FOR EACH ROW
BEGIN
IF (SELECT COUNT(id) FROM stack_over_t
WHERE id=NEW.id AND data=NEW.data) > 0
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot add or update row: only one active row allowed per type';
END IF;
END;
$$

关于mysql - 在插入 mysql 表之前进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53868642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com