Sql server 2008 在计算列上使用触发器时,从字符串转换日期和/或时间时,转换失败 桌子 触发 错误

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

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-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);