Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 每当有插入时更新表的触发器_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 每当有插入时更新表的触发器

Sql 每当有插入时更新表的触发器,sql,sql-server,tsql,Sql,Sql Server,Tsql,我尝试使用触发器(在SQL Server中)在表上有插入时更新表,但出现错误: 从字符串转换日期和/或时间时,转换失败 使用的触发器: create trigger [dbo].[update_table_scan_for_insert] on [dbo].[table_scan] for insert as begin update table_scan set start_date = getdate() where start_date = '

我尝试使用触发器(在SQL Server中)在表上有插入时更新表,但出现错误:

从字符串转换日期和/或时间时,转换失败

使用的触发器:

create trigger [dbo].[update_table_scan_for_insert] 
on [dbo].[table_scan] 
for insert 
as    
begin
    update table_scan set
        start_date = getdate()
    where start_date = 'NULL'
end 

插入发生后,当
start\u date
中存在空值时,将更新表
table\u scan

使用
是空的
而不是SQL Server中的
'NULL'

create trigger [dbo].[update_table_scan_for_insert] 
on [dbo].[table_scan] 
for insert 
as    
begin
    update table_scan set
        start_date = getdate()
    where start_date IS NULL
end

您也可以尝试此
方法,其中ISNULL(start_date,'NULL')='NULL'

start_date='NULL'
应该是
start_date is NULL
您的触发器(如果按照建议更正和实现)将使用空值更新表中的每一行。这真的是你的目标吗?这难道不应该只更新新插入的行(如果有)?即使它被固定为只更新正在插入的行,它也会阻止任何类型的回溯插入,而不进行后续更新。您确定所需的行为不是默认约束吗?