Я хочу вставить запись после вставки с помощью триггера, но она не работает должным образом. он находится на бухгалтерском столе. Сначала я написал триггер, и я получил эту ошибку: Оператор INSERT противоречил ограничению FOREIGN KEY. Конфликт произошел в базе данных. Оператор был прерван. Тогда я нашел ключ и написал триггер на эту таблицу, а затем я получил новую ошибку: это SqlTransaction завершен, она больше не является полезным для SQL Server и здесь является триггер:Вставить в другую таблицу с триггером
USE [Sepidar01]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Alter TRIGGER [INV].[CrmSelectInsertVWInvoiceItems]
ON [INV].[InventoryDeliveryItem]
After Insert
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CustomerCode varchar(40)
DECLARE @InvoiceRef INT
DECLARE @Price decimal(19, 4)
DECLARE @CreationDate datetime
DECLARE @Quantity decimal(19, 4)
DECLARE @GuID uniqueidentifier
DECLARE @KalaCode int
DECLARE @BaseInvoiceItem int
SELECT @BaseInvoiceItem=(BaseInvoiceItem) FROM INSERTED
select @CreationDate AS [inv.CreationDate],@CustomerCode AS [dl.Code],@Price
AS [invitem.Price],@Quantity AS [invitem.Quantity], @KalaCode AS [itemst.ItemStockID]
from [Sepidar01].[INV].[InventoryDeliveryItem] as invent
join sls.InvoiceItem as invitem
on BaseInvoiceItem =InvoiceItemID
join sls.Invoice as inv
on InvoiceId = InvoiceRef
join acc.dl as dl
on inv.CustomerRealName like dl.Title
join inv.ItemStock as itemst
on invitem.ItemRef = itemst.ItemRef
where invent.BaseInvoiceItem = @BaseInvoiceItem
SELECT @GuID AS [bartar_newpaitientId]
FROM [192.168.0.15].[Bartar_MSCRM].[dbo].[bartar_newpaitientBase] as newPatient
where newPatient.bartar_CustomerCode = @CustomerCode
INSERT INTO [192.168.0.15].[Test_MSCRM].[dbo].[bartar_callcenterreportBase]
([bartar_callcenterreportId]
,[OwnerId]
,[statecode]
,[CreatedOn]
,[bartar_Date]
,[bartar_patientName]
,[bartar_Brand]
,[bartar_Paste]
,[bartar_Bag]
,[bartar_ACC]
,[bartar_NextDateSales]
,[bartar_name])
VALUES
(NEWID(),'315BE87D-0035-E511-80B5-0007E9498006',0,@CreationDate,@CreationDate,@GuID,0,0,0,0,@CreationDate,'System')
END
Так как я могу решите эту проблему?
Tag DBMS использовал, чтобы получить больше внимания! (Этот код совсем не похож на ANSI SQL.) – jarlh
И я использовал его на виду вместо вставки, Не выдавал никаких ошибок и не вставлял никаких данных. – Morteza
Ваш триггер не работает. Он принимает ровно одну строку в 'insert'. На самом деле, может быть 0, 1 или * несколько * строк. Предпочитаете написать один оператор 'INSERT ... SELECT', который напрямую ссылается на' вставленный'. –