SQL Server触发器问题,语句有问题
--选课表CREATETABLESC(Snochar(10)NOTNULL,Cnochar(10)NOTNULL,SCfalgbit,Sgradesmallint,Snu...
--选课表
CREATE TABLE SC
(
Sno char(10) NOT NULL,
Cno char(10) NOT NULL,
SCfalg bit,
Sgrade smallint,
Snumber smallint,
PRIMARY KEY(Sno, Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);
--创建一个触发器,当在选课表SC中插入相应课程号的记录时
--把选该课的学生人数加1
GO
CREATE TRIGGER Insert_SC ON SC
FOR INSERT
AS BEGIN
IF (new.Cno = old.Cno) THEN
new.Snumber = old.Snumber + 1;
END IF;
END;
消息 156,级别 15,状态 1,过程 Insert_SC,第 4 行
关键字 'THEN' 附近有语法错误。
用的SQL Server 2005 展开
CREATE TABLE SC
(
Sno char(10) NOT NULL,
Cno char(10) NOT NULL,
SCfalg bit,
Sgrade smallint,
Snumber smallint,
PRIMARY KEY(Sno, Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);
--创建一个触发器,当在选课表SC中插入相应课程号的记录时
--把选该课的学生人数加1
GO
CREATE TRIGGER Insert_SC ON SC
FOR INSERT
AS BEGIN
IF (new.Cno = old.Cno) THEN
new.Snumber = old.Snumber + 1;
END IF;
END;
消息 156,级别 15,状态 1,过程 Insert_SC,第 4 行
关键字 'THEN' 附近有语法错误。
用的SQL Server 2005 展开
2012-05-20
展开全部
你以前一直用Oracle数据库吧,SQL Server的触发器和Oracle的差别还是比较大的,MSsql中没有:new.…或:old.…的用法,inserted指的是更新或插入的数据,deleted指的是被修改或删除的数据。MSsql中的IF语句不是“IF THEN END IF”而是“IF begin end”的模式。并且各句末尾不需要加分号。
CREATE TRIGGER Insert_SC ON SC
FOR INSERT
declare @oldcno 类型,@newcno 类型,@newsnum 类型,@oldsnum 类型;
AS
BEGIN
select @oldcno=Cno from deleted
select @newcno=Cno from inserted
select @oldsnum=Snumber from deleted
IF (@oldcno= @newcno)
begin
@newsnum= @oldsnum+ 1;
update SC set Snumber =@newsnum where 唯一标识你正在操作的行;
end
END;
以上写的这个并不能直接供你使用,你还需要琢磨下修改后才能使用。
CREATE TRIGGER Insert_SC ON SC
FOR INSERT
declare @oldcno 类型,@newcno 类型,@newsnum 类型,@oldsnum 类型;
AS
BEGIN
select @oldcno=Cno from deleted
select @newcno=Cno from inserted
select @oldsnum=Snumber from deleted
IF (@oldcno= @newcno)
begin
@newsnum= @oldsnum+ 1;
update SC set Snumber =@newsnum where 唯一标识你正在操作的行;
end
END;
以上写的这个并不能直接供你使用,你还需要琢磨下修改后才能使用。
展开全部
你的数据库是那个版本的?
还有就是 new.Snumber = old.Snumber + 1; 没有UPDATE 怎么实现+1的
if 后面不用加then
还有就是 new.Snumber = old.Snumber + 1; 没有UPDATE 怎么实现+1的
if 后面不用加then
追问
GO
CREATE TRIGGER Insert_SC ON SC
FOR INSERT
AS BEGIN
IF (new.Cno = old.Cno)
UPDATE SC SET new.Snumber = old.Snumber + 1;
END IF;
END;
消息 102,级别 15,状态 1,过程 Insert_SC,第 6 行
';' 附近有语法错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询