gpt4 book ai didi

MySQL 类断言约束

转载 作者:可可西里 更新时间:2023-11-01 08:21:11 25 4
gpt4 key购买 nike

我是一个 MySQL 新手,我刚刚发现它不支持断言。

我得到了这张表:

   CREATE TABLE `guest` (
`ssn` varchar(16) NOT NULL,
`name` varchar(200) NOT NULL,
`surname` varchar(200) NOT NULL,
`card_number` int(11) NOT NULL,
PRIMARY KEY (`ssn`),
KEY `card_number` (`card_number`),
CONSTRAINT `guest_ibfk_1` FOREIGN KEY (`card_number`) REFERENCES `member` (`card_number`)
)

我需要的是一个成员(member)最多可以邀请2位客人。因此,在表 guest 中,我需要一个特定的 card_number 最多可以出现 2 次。

我如何在没有断言的情况下管理它?

谢谢。

最佳答案

这绝对是表“guest”上的 BEFORE INSERT 触发器的味道:

DELIMITER $$
DROP TRIGGER IF EXISTS check_guest_count $$
CREATE TRIGGER check_guest_count BEFORE INSERT ON `guest`
FOR EACH ROW BEGIN
DECLARE numguests int DEFAULT 0;
SELECT COUNT(*) INTO numguests FROM `guest` WHERE card_number=NEW.card_number;
if numguests>=2 THEN
SET NEW.card_number = NULL;
END IF;
END;
$$
DELIMITER ;

这基本上是查找当前客人数,如果已经>=2,则将 card_number 设置为 NULL。由于 card_number 被声明为 NOT NULL,这将拒绝插入。

在 MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid) 上测试并为我工作

关于MySQL 类断言约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8839540/

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