rain487 2023-04-03 17:07 采纳率: 40%
浏览 15

sql 触发器实现外键约束

触发器 实现外键约束
数据插入失败

在插入课程记录前学生表中找到是否存在此学号和课程表中是否实现此课程

BEGIN 
  DECLARE xn INT;
  declare xn1 int;
  DECLARE msg VARCHAR(1000);
  SELECT count(s.sno) INTO xn FROM stu s WHERE s.sno=NEW.sno;
  SELECT count(s.cno) INTO xn1 FROM cou s WHERE s.cno=NEW.cno;
  IF xn != 1 and xn1!=-1 THEN  
  set msg = "Cannot add or update a row: a foreign key constraint on scores(name) fails.";
  SIGNAL SQLSTATE '23000' SET MESSAGE_TEXT = msg; #调用中断实现拒绝插入
  END IF;
end

sc表定义


CREATE TABLE `sc` (
  `sno` char(4) NOT NULL,
  `cno` char(4) NOT NULL,
  `grade` decimal(4,1) DEFAULT NULL,
  PRIMARY KEY (`sno`,`cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

stu表

CREATE TABLE `stu` (
  `sno` char(4) NOT NULL,
  `sname` char(8) NOT NULL,
  `sex` tinyint DEFAULT '1',
  `mno` char(2) DEFAULT NULL,
  `birdate` datetime DEFAULT NULL,
  `memo` text,
  `photo` varchar(30) DEFAULT NULL,
  `E_MAIL` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`sno`),
  UNIQUE KEY `sno` (`sno`),
  KEY `Stu_Major` (`mno`),
  CONSTRAINT `stu_chk_1` CHECK (((`sex` = 0) or (`sex` = 1))),
  CONSTRAINT `stu_chk_2` CHECK ((`sno` like _utf8mb4'S%')),
  CONSTRAINT `stu_chk_3` CHECK ((`E_MAIL` like _utf8mb4'____@____.___'))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

cou表定义

CREATE TABLE `cou` (
  `cno` char(4) NOT NULL,
  `cname` varchar(30) DEFAULT NULL,
  `credit` smallint DEFAULT NULL,
  `ptime` char(5) DEFAULT NULL,
  `teacher` char(10) DEFAULT NULL,
  PRIMARY KEY (`cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

添加对sc表的sno,cno约束后数据插入不了了,是什么问题 怎么解决呀??

img

  • 写回答

3条回答 默认 最新

  • 於黾 2023-04-03 17:19
    关注

    怎么光有begin和end,作为一个触发器,总要有before或者after之类的触发条件吧
    目测是NEW.cno出错了,问题是sql不全,看不出来你这里new到底代表的是哪个表

    评论

报告相同问题?

问题事件

  • 创建了问题 4月3日

悬赏问题

  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 (求远程解决)深信服vpn-2050这台设备如何配置才能成功联网?