首页 / MYSQL / 类似于MySQL断言的约束
类似于MySQL断言的约束
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了类似于MySQL断言的约束,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1038字,纯文字阅读大概需要2分钟。
内容图文
![类似于MySQL断言的约束](/upload/InfoBanner/zyjiaocheng/881/44b25650bee14a6aafb4a0bc47aa807a.jpg)
我是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`)
)
我需要的是一个成员最多可以邀请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断言的约束全部内容,希望文章能够帮你解决类似于MySQL断言的约束所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。