我想自动插入当前时间,并在datetime列中插入日期。默认情况下,它会插入00:00:00
我创建了触发器
Create trigger tr_tm on emp
after insert,update
as
declare @tme time
set @tme=(select CONVERT(varchar(7),start_date,108) from emp)
update emp
set @tme=convert(varchar(8),getdate(),108)
where @tme='00:00:00'
go
但它显示错误:
消息512,级别16,状态1,过程tr_te,行15返回子查询 超过1个值。当子查询跟随=时,不允许这样做, !=,<,< =,>,> =或当子查询用作表达式时。该 声明已被终止。
怎么可能?
提前致谢..
答案 0 :(得分:0)
一种方法是在列中添加default constraint。当您没有提供值时,默认约束将用于填充列。
示例强>
-- Example table.
CREATE TABLE Example
(
A INT,
B TIME DEFAULT(CAST(GETDATE() AS TIME))
)
;
插入数据时,如果我们不提供值,则会应用默认值。
-- Adding data, without referencing column.
INSERT INTO Example
(
A
)
VALUES
(1),
(2),
(3)
;
您还可以明确指定要应用默认值。
-- Adding data, using DEFAULT.
INSERT INTO Example
(
A,
B
)
VALUES
(10, DEFAULT),
(20, DEFAULT),
(30, DEFAULT)
;
您还可以选择忽略默认值并提供自己的值。
-- Adding data without using default value.
INSERT INTO Example
(
A,
B
)
VALUES
(100, '09:30:00'),
(200, '10:30:00'),
(300, '11:30:00')
;
上面的三个查询返回:
A B
1 13:19:28.1900000
2 13:19:28.1900000
3 13:19:28.1900000
10 13:19:28.1900000
20 13:19:28.1900000
30 13:19:28.1900000
100 09:30:00.0000000
200 10:30:00.0000000
300 11:30:00.0000000