sql - SQL触发器错误说明?

标签 sql triggers compiler-errors

我已经在这个触发器上工作了一段时间,并且似乎被卡住了。我觉得我的逻辑有些正确,但是当我运行代码时,收到以下错误消息:

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/

相关文章:

sql - 选择从时间戳到时间戳的所有日期间隔

mysql - 5.5.52-MariaDB 与 5.6.15 mysql 触发器不工作

c++ - 错误: "couldn' t infer template argument '_Tp' "when passing in {} into

MySQL 仅从单表中删除记录

SQL Server 2008 管理工作室 : how to turn off the SAVE prompt

mysql - 如果列中有空值,则更新后触发器无法正常工作

mysql - 在 MySql 中创建触发器时声明变量

hibernate - 消除编译时错误的问题-Springs MVC

python - Python-初学者问题

sql - 在 SQL Server 的查询中插入数据