Sql server 我有一个在表中插入行的查询,这个表有add触发器,当我运行这个查询时,这个触发器引发如下错误:

Sql server 我有一个在表中插入行的查询,这个表有add触发器,当我运行这个查询时,这个触发器引发如下错误:,sql-server,tsql,database-trigger,Sql Server,Tsql,Database Trigger,错误 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时 错误号码:512 错误严重性:16 错误状态:1 错误过程:AddBookingSlot 代码: 插入的行可能包含多行-这是错误的原因。您可能应该放弃values insert方法,并替换为select insert方法,可能类似这样 SELECT I.DoctorID ,i.[Day] , convert(char(5), @starttime, 108)

错误

子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时

错误号码:512 错误严重性:16 错误状态:1

错误过程:AddBookingSlot

代码:


插入的行可能包含多行-这是错误的原因。您可能应该放弃values insert方法,并替换为select insert方法,可能类似这样

SELECT I.DoctorID 
           ,i.[Day] 
            , convert(char(5), @starttime, 108)
           ,d.ExaminationFees
           ,1
           ,null
           ,i.BookingDayID 
           ,null
           ,null
           ,0
           ,d.[SubscribtionPackage]
           ,0
           ,0
           ,i.[Shift]
           ,0,0,
           i.UserId,
           i.UpdatedBy
From INSERTED i
join doctor d on d.DoctorID=i.doctorid

我无法告诉您医生与inserted的关系,因此您可能需要根据自己的需要进行调整。

如果没有模式和样本数据,很难准确地说出问题所在。您是否尝试过单独运行insert中的每个子查询,以查看是否有任何子查询返回超过1个值?哪个数据库?您应该能够放弃insert..values而选择insert..SELECTALI insert可能包含多行-这是导致错误的原因您没有考虑到插入表可能具有的事实其中有多行。使用子查询编写insert的方式永远无法正常运行,因为这些子查询最多只能返回一行。由于子查询返回多行,因此会出现该错误。
SELECT I.DoctorID 
           ,i.[Day] 
            , convert(char(5), @starttime, 108)
           ,d.ExaminationFees
           ,1
           ,null
           ,i.BookingDayID 
           ,null
           ,null
           ,0
           ,d.[SubscribtionPackage]
           ,0
           ,0
           ,i.[Shift]
           ,0,0,
           i.UserId,
           i.UpdatedBy
From INSERTED i
join doctor d on d.DoctorID=i.doctorid