我通过界面往YHJ_GYH_GB_CODE表里插入数据,我特意A3这个字段没有插进去。
想通过触发器来实现,写了如下脚本:
结果发现同样的数据插进去2条,一个A3带日期的,一个A3不带日期的,
我估计是触发器这里的问题,不知我想的通过前台界面插入A1,A2的同时把A3顺便给插个日期值的想法,是否能通过触发器实现?
--DROP TRIGGER YHJ_GYH_GB_CODE_INSERTCREATE TRIGGER [dbo].YHJ_GYH_GB_CODE_INSERT ON [dbo].YHJ_GYH_GB_CODE
FOR INSERT
AS
BEGIN
INSERT INTO YHJ_GYH_GB_CODE
( A1 ,
A2 ,
A3
)
SELECT inserted.A1 ,
inserted.A2 ,
CONVERT(VARCHAR(100), GETDATE(), 21)
FROM inserted;
END
想通过触发器来实现,写了如下脚本:
结果发现同样的数据插进去2条,一个A3带日期的,一个A3不带日期的,
我估计是触发器这里的问题,不知我想的通过前台界面插入A1,A2的同时把A3顺便给插个日期值的想法,是否能通过触发器实现?
--DROP TRIGGER YHJ_GYH_GB_CODE_INSERTCREATE TRIGGER [dbo].YHJ_GYH_GB_CODE_INSERT ON [dbo].YHJ_GYH_GB_CODE
FOR INSERT
AS
BEGIN
INSERT INTO YHJ_GYH_GB_CODE
( A1 ,
A2 ,
A3
)
SELECT inserted.A1 ,
inserted.A2 ,
CONVERT(VARCHAR(100), GETDATE(), 21)
FROM inserted;
END
ALTER TABLE YHJ_GYH_GB_CODE ADD CONSTRAINT DF_YHJ_GYH_GB_CODE_A3 DEFAULT GETDATE() FOR A3;
加约束之后, 你在执行
INSERT INTO YHJ_GYH_GB_CODE ( A1 , A2 ) VALUES( @A1, @A2 )语句时, A3 会自动赋默认值 , 不需要你操心的。
-- 楼主,把你的测试结果发上来。--DROP TRIGGER YHJ_GYH_GB_CODE_INSERT
create table YHJ_GYH_GB_CODE(A1 int, A2 int, A3 varchar(30))
goCREATE TRIGGER [dbo].YHJ_GYH_GB_CODE_INSERT ON [dbo].YHJ_GYH_GB_CODE
FOR INSERT
AS
BEGIN
INSERT INTO YHJ_GYH_GB_CODE
( A1 ,
A2 ,
A3
)
SELECT inserted.A1 ,
inserted.A2 ,
CONVERT(VARCHAR(100), GETDATE(), 21)
FROM inserted;
END
goinsert into YHJ_GYH_GB_CODE(A1,A2) values(11,111)
go
insert into YHJ_GYH_GB_CODE(A1,A2,A3) values(22,222,'2011-01-01')
go
select * from YHJ_GYH_GB_CODE
go
drop table YHJ_GYH_GB_CODE
go
A1 A2 A3
----------- ----------- ------------------------------
11 111 NULL
11 111 2018-12-05 08:22:49.467
22 222 2011-01-01
22 222 2018-12-05 08:22:49.473(4 行受影响)
go
CREATE TRIGGER [dbo].YHJ_GYH_GB_CODE_INSERT ON [dbo].YHJ_GYH_GB_CODE
instead of insert
AS
BEGIN
INSERT INTO YHJ_GYH_GB_CODE
( A1 ,
A2 ,
A3
)
SELECT inserted.A1 ,
inserted.A2 ,
CONVERT(VARCHAR(100), GETDATE(), 21)
FROM inserted;
END
go
insert into YHJ_GYH_GB_CODE(A1,A2) values(11,111)
go
insert into YHJ_GYH_GB_CODE(A1,A2,A3) values(22,222,'2011-01-01')
go
select * from YHJ_GYH_GB_CODE
go
drop table YHJ_GYH_GB_CODE
go
结果是:
11 111 2018-12-05 20:35:05.110
22 222 2018-12-05 20:35:05.123