触发将表插入到具有NOT NULL约束的另一个表中的ON表

时间:2018-11-23 01:15:38

标签: sql sql-server

CREATE TRIGGER logaction ON temployeelog
AFTER INSERT 
AS
BEGIN
  INSERT INTO TABLE temployee(ename, experience)
    SELECT ename,experience FROM INSERTED
END

雇员的结构

CREATE TABLE temployee
(
  ename VARCHAR(20),
  experience INT NOT NULL
)

ALTER TABLE temployeeADD  DEFAULT (0) FOR experience

当我没有在“插入”体验列中传递数据时,我将收到错误消息。

  

无法将NULL值插入表的“ experience”列中   '临时雇员';列不允许为空。 INSERT失败。该声明   已终止。

我想传递NULL值temployeelog表,并希望通过“保留在temployee中的DEFAULT VALUES”来处理这些情况

我该如何实现?

1 个答案:

答案 0 :(得分:4)

只有在您不插入表格默认值的情况下,该表格才会起作用,因此将插入内容拆分为一个可以处理non-null的体验和一个可以处理null的体验

INSERT INTO TABLE temployee(ename, experience)
  SELECT ename,experience
  FROM INSERTED
  where experience is not null;

INSERT INTO TABLE temployee(ename)
  SELECT ename
  FROM INSERTED
  where experience is null;