S表
CREATE TABLE IF NOT EXISTS S(
Sno CHAR(10) PRIMARY KEY,
Sn VARCHAR(20) NOT NULL,
Sex CHAR(2),
Age int,
Dept VARCHAR(20)
SC表
CREATE TABLE IF NOT EXISTS SC(
Sno CHAR(10),
CNo CHAR(10),
Score decimal(5,2),
PRIMARY KEY(Sno,CNo)
)DEFAULT CHARSET=utf8;
S,SC表主外键均删除 不知道是否是主外键的原因导致MYSQL语句报错
题目:创建一个触发器,该触发器保证在学生选课表SC中添加新的记录时,新学生的学号Sno必须已经存在于学生表S中,如果不 存在就提示错误提示“学生表S中没有该学生的基本信息,拒绝插入!
DELIMITER $$
CREATE TRIGGER Sno_insert
AFTER INSERT
ON SC
AS
IF NOT EXISTS(SELECT Sno FROM S,inserted
WHERE S.Sno=inserted.Sno)
BEGIN
PRINT '学生表S中没有该学生的基本信息,拒绝插入!'
ROLLBACK TRANSACTION
END
$$
DELIMITER ;
尝试代码2
DELIMITER $$
CREATE TRIGGER Sno_insert
ON SC
FOR INSERT
AS
DECLARE @Sno CHAR(10),
@CNo CHAR(10)
@Score decimal(5,2)
SELECT @Sno=Sno,@CNo=CNo,@Score=Score FROM inserted
IF(@Sno IN(SELECT Sno FROM S WHERE @CNo=CNo))
PRINT('拒绝插入!')
ELSE
INSERT INTO SC(Sno,CNo,Score)
VALUES(@Sno,@CNo,@Score)
ROLLBACK TRANSACTION
GO
$$
DELIMITER ;
以上是两个测试代码 均报line2错误 不知道是不是因为删除了主外键的关系