我已经在这个触发器上工作了一段时间,并且似乎被卡住了。我觉得我的逻辑有些正确,但是当我运行代码时,收到以下错误消息:
Msg 213, Level 16, State 1, Procedure Message_Student_ForInsert, Line 9
Column name or number of supplied values does not match table definition.
这是我的代码:
Create Trigger Message_Student_ForInsert
ON CourseEnrolled
For Insert
AS
Begin
Declare @Id int
Select @Id = StudentID from inserted
insert into CourseAudit
Values ('New Student with Id = ' + Cast(@Id as nvarchar(10)) + ' is added at ' + cast(GetDate() as nvarchar(30)))
END
我还创建了一个表名称CourseAudit,以尝试解决此错误。我以为该错误意味着我缺少表内的值-因为我还没有插入任何值。任何帮助将不胜感激,谢谢!
最佳答案
您的INSERT语句不正确。在这里了解更多; INSERT()
根据您的代码,假设表[CourseAudit]存在,并且其中包含nvarchar()列。
您需要指定插入的列名称。
如果省略列名,则应按表定义中出现的顺序为所有列设置一个值。
例:
insert into CourseAudit (SomeCulumnNameHere)
Values ('New Student with Id = ' + Cast(@Id as nvarchar(10))
+ ' is added at ' + cast(GetDate() as nvarchar(30)))
关于sql - SQL触发器错误说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097396/