Sql server 2008 在计算列上使用触发器时,从字符串转换日期和/或时间时,转换失败 桌子 触发 错误
Msg 241,16级,状态1,第1行 从字符串转换日期和/或时间时,转换失败Sql server 2008 在计算列上使用触发器时,从字符串转换日期和/或时间时,转换失败 桌子 触发 错误,sql-server-2008,Sql Server 2008,Msg 241,16级,状态1,第1行 从字符串转换日期和/或时间时,转换失败 试试下面的insert语句,我觉得很好 insert into book_issue_return_details( issued_date, return_date, payed) values ('16-05-2018','17-05-2018',0), ('07-05-2018','17-05-2018',0), ('01-05-2018','17-05-2018',0), ('17-05-2018','17
试试下面的insert语句,我觉得很好
insert into book_issue_return_details(
issued_date,
return_date,
payed)
values
('16-05-2018','17-05-2018',0),
('07-05-2018','17-05-2018',0),
('01-05-2018','17-05-2018',0),
('17-05-2018','17-05-2018',0),
('01-04-2018','17-05-2018',0);
首先,完成以下基本故障排除步骤:1。一次只插入一行,以查看特定行是否触发它;2.禁用触发器以查看触发器是否是问题所在。这是提问前应该做的基本故障排除您的触发器中有冗余代码,甚至没有必要-您可以将此计算放入计算列alsoyes,我尝试了此步骤,然后问了一个问题…您发现了什么?插入的四行中的哪一行导致错误?全部的触发器有什么区别吗?这个错误是因为日期格式,我在设置了日期格式后已经修复了它,然后请将它标记为答案。会帮助别人。谢谢
create trigger trforinsertpenalty
on book_issue_return_details
after insert
as
begin
declare @value int
select @value=for_days from book_issue_return_details;
update book_issue_return_details
set penalty=case
when for_days<'8' then 0
when for_days='8' then 10
when for_days='15' then 20
when for_days='30' then 30
when for_days>'30' then 100
end
end
insert into book_issue_return_details(
issued_date,
return_date,
payed)
values
('16-05-2018','17-05-2018',0),
('07-05-2018','17-05-2018',0),
('01-05-2018','17-05-2018',0),
('17-05-2018','17-05-2018',0),
('01-04-2018','17-05-2018',0);
insert into book_issue_return_details(issued_date,return_date, payed)
values('16-May-2018','17-May-2018',0),
('07-May-2018','17-May-2018',0),
('01-May-2018','17-May-2018',0),
('17-May-2018','17-May-2018',0),
('01-Apr-2018','17-May-2018',0);