触发ON表,将INSERT激发到另一个具有NOT NULL约束的表中,该表具有float数据类型

时间:2018-11-23 13:40:26

标签: sql-server tsql database-trigger

c = ''
f = c.match(/(?:\s|^)(?:@(?!(?:\d+|\w+?_|_\w+?)(?:\s(\[)|$)))(\w+)(?=\s|$)/i)

学生的结构

CREATE TRIGGER studenttr ON tstudentlog
AFTER INSERT 
AS
BEGIN

INSERT INTO TABLE tstudent(sname, marks)
SELECT sname,marks FROM INSERTED


END

当我不将标记列中的数据传递到tstudentlog中时,将其插入记录

我收到一个错误:

  

无法将值NULL插入表“ tstudent”的“标记”列中;列不允许为空。 INSERT失败。该声明已终止。

我尝试了以下操作,但没有成功

CREATE TABLE tstudent
(
name VARCHAR(20),
marks FLOAT NOT NULL

)

ALTER TABLE tstudent ADD  DEFAULT (0) FOR marks

我想传递NULL值tstudent表,并希望通过“保存在tstudent中的默认值”来处理这些情景。

我该如何实现?

1 个答案:

答案 0 :(得分:2)

表中的默认值有很多问题, 在insert语句上使用合并会很好吗?

CREATE TRIGGER studenttr ON tstudentlog
AFTER INSERT 
AS
BEGIN

INSERT INTO TABLE tstudent(sname, marks)
SELECT sname,coalesce(marks,0) FROM INSERTED


END