我遇到問題;我寫了一個SQL觸發器,我得到一個錯誤,那就是:消息257,級別16,狀態3,過程stok_yedek,第75行不允許從數據類型datetime到int的隱式轉換
消息257,級別16,狀態3,過程stok_yedek,75號線
從數據datetime類型爲int隱式轉換是不允許的。使用 CONVERT函數來運行此查詢。
這是我的代碼:
ALTER trigger stok_yedek on dbo.[Instance - Stok (1851)] for insert
as begin
declare @ParentInstance int
declare @ParentTemplateConfigurationItem int
declare @ParentConfigurationItem int
declare @BaseInstance int
declare @SortOrder int
declare @DateCreated datetime
declare @DateModified datetime
declare @ModifiedBy int
declare @RecycleBin tinyint
declare @Archived tinyint
declare @OriginalInstance int
declare @Stok_Adi nchar(100)
declare @Stok_Grup_Kodu int
declare @Mevcut_Miktar float
declare @Model_No nchar(100)
declare @Grubu int
declare @Ilgili int
declare @Marka nchar(100)
declare @Alt_Grubu int
declare @Logo_Stok_Kodu nchar(100)
declare @Depo_Mevcutu float
declare @Antrepo_Mevcutu float
declare @Birim int
declare @New_Drop_Down nvarchar(128)
declare @Masraf_Merkezi_Kodu float
declare @Masraf_Merkezi_Kodu2 nchar(100)
declare @Tipi nchar(100)
declare @Sogutma_Kapasitesi float
declare @Marka_Ozel_Kodu int
declare @Ozel_Kod nchar(100)
declare @Ozel_Kod2 nchar(100)
declare @Durumu nvarchar(128)
declare @Uretici nchar(100)
declare @Aciklama2 nchar(100)
select @ParentInstance=inserted.ParentInstance
from inserted
SELECT @ParentTemplateConfigurationItem=inserted.ParentTemplateConfigurationItem
FROM inserted
SELECT @ParentConfigurationItem=ParentConfigurationItem
FROM inserted
SELECT @BaseInstance=BaseInstance FROM inserted
SELECT @SortOrder=SortOrder from inserted
select @DateCreated=DateCreated from inserted
select @DateModified=DateModified from inserted
SELECT @ModifiedBy=ModifiedBy FROM inserted
SELECT @RecycleBin=RecycleBin FROM inserted
select @Archived=Archived FROM inserted
SELECT @OriginalInstance=OriginalInstance FROM inserted
SELECT @Stok_Adi= [Stok Adı (1852)]FROM inserted
SELECT @Stok_Grup_Kodu=[Stok Grup Kodu (1993)] FROM inserted
SELECT @Mevcut_Miktar=[Mevcut Miktar (1999)] FROM inserted
select @Model_No=[Model No (2001)]FROM inserted
SELECT @Grubu=[Grubu (Özel Kod2) (2002)] from inserted
select @Ilgili=[İlgili Şirket (2035)] from inserted
select @Marka=[Markası (2036)] from inserted
select @Alt_Grubu=[Alt Grubu (Özel Kod3) (2397)] from inserted
select @Logo_Stok_Kodu=[Logo Stok Kodu (2398)] from inserted
select @Depo_Mevcutu=[Depo Mevcutu (2487)] from inserted
select @Antrepo_Mevcutu=[Antrepo Mevcutu (2488)]from inserted
select @Birim=[Birim (2000)]from inserted
select @New_Drop_Down=[New Drop Down (3931)]from inserted
select @Masraf_Merkezi_Kodu=[Masraf Merkezi Kodu (3932)]from inserted
select @Masraf_Merkezi_Kodu2=[Masraf Merkezi Kodu (3933)]from inserted
select @Tipi=[Tipi (3934)] from inserted
select @Sogutma_Kapasitesi=[Soğutma Kapasitesi (3935)] from inserted
select @Marka_Ozel_Kodu=inserted.[Marka (Özel Kodu) (4046)] from inserted
select @Ozel_Kod=[Özel Kod4 (4053)] from inserted
select @Ozel_Kod2=[Özel Kod5 (4054)]from inserted
select @Durumu=[Durumu (4247)] from inserted
select @Uretici=[Üretici Kodu (4302)] from inserted
select @Aciklama2=[Açıklama-2 (4303)] from inserted
INSERT INTO [EGITIM_01].dbo.[Instance - Stok (1851)]
([ParentInstance]
,[ParentTemplateConfigurationItem]
,[ParentConfigurationItem]
,[BaseInstance]
,[SortOrder]
,[DateCreated]
,[DateModified]
,[ModifiedBy]
,[RecycleBin]
,[Archived]
,[OriginalInstance]
,[Stok Adı (1852)]
,[Stok Grup Kodu (1993)]
,[Mevcut Miktar (1999)]
,[Model No (2001)]
,[Grubu (Özel Kod2) (2002)]
,[İlgili Şirket (2035)]
,[Markası (2036)]
,[Alt Grubu (Özel Kod3) (2397)]
,[Logo Stok Kodu (2398)]
,[Depo Mevcutu (2487)]
,[Antrepo Mevcutu (2488)]
,[Birim (2000)]
,[New Drop Down (3931)]
,[Masraf Merkezi Kodu (3932)]
,[Masraf Merkezi Kodu (3933)]
,[Tipi (3934)]
,[Soğutma Kapasitesi (3935)]
,[Marka (Özel Kodu) (4046)]
,[Özel Kod4 (4053)]
,[Özel Kod5 (4054)]
,[Durumu (4247)]
,[Üretici Kodu (4302)]
,[Açıklama-2 (4303)])
VALUES
(@ParentInstance,@ParentInstance,@ParentTemplateConfigurationItem
,@ParentConfigurationItem,@BaseInstance,@SortOrder,@DateCreated
,@DateModified,@ModifiedBy,@RecycleBin,@OriginalInstance,@Stok_Adi,
@Stok_Grup_Kodu,@Mevcut_Miktar,@Model_No,@Grubu,@Ilgili,
@Marka,@Alt_Grubu,@Logo_Stok_Kodu,@Depo_Mevcutu,@Antrepo_Mevcutu,
@Birim,@New_Drop_Down,@Masraf_Merkezi_Kodu,@Masraf_Merkezi_Kodu2,@Tipi
,@Sogutma_Kapasitesi,@Marka,@Ozel_Kod,@Ozel_Kod2,@Durumu,@Uretici
,@Aciklama2
)
if @@TRANCOUNT > 0
BEGIN
COMMIT TRANSACTION InProc;
-- There is no BEGIN TRAN statement after this statement. However there is no error 266 either.
PRINT 'In proc commit: ' + CAST(@@TRANCOUNT as char(1));
END
else
print @@error
end
INSERT INTO [Ramazan_Test].[dbo].[stok_yedek]
([ParentInstance]
,[ParentTemplateConfigurationItem]
,[ParentConfigurationItem]
,[BaseInstance]
,[SortOrder]
,[DateCreated]
,[DateModified]
,[ModifiedBy]
,[RecycleBin]
,[Archived]
,[OriginalInstance]
,[Stok_Adi]
,[Stok Grup Kodu (1993)]
,[Mevcut Miktar (1999)]
,[Model No (2001)]
,[Grubu (Özel Kod2) (2002)]
,[İlgili Şirket (2035)]
,[Markası (2036)]
,[Alt Grubu (Özel Kod3) (2397)]
,[Logo Stok Kodu (2398)]
,[Depo Mevcutu (2487)]
,[Antrepo Mevcutu (2488)]
,[Birim (2000)]
,[New Drop Down (3931)]
,[Masraf Merkezi Kodu (3932)]
,[Masraf Merkezi Kodu (3933)]
,[Tipi (3934)]
,[Soğutma Kapasitesi (3935)]
,[Marka (Özel Kodu) (4046)]
,[Özel Kod4 (4053)]
,[Özel Kod5 (4054)]
,[Durumu (4247)]
,[Üretici Kodu (4302)]
,[Açıklama-2 (4303)])
VALUES
(@ParentInstance,@ParentInstance,@ParentTemplateConfigurationItem
,@ParentConfigurationItem,@BaseInstance,@SortOrder,@DateCreated
,@DateModified,@ModifiedBy,@RecycleBin,@OriginalInstance,@Stok_Adi,
@Stok_Grup_Kodu,@Mevcut_Miktar,@Model_No,@Grubu,@Ilgili,
@Marka,@Alt_Grubu,@Logo_Stok_Kodu,@Depo_Mevcutu,@Antrepo_Mevcutu,
@Birim,@New_Drop_Down,@Masraf_Merkezi_Kodu,@Masraf_Merkezi_Kodu2,@Tipi
,@Sogutma_Kapasitesi,@Marka,@Ozel_Kod,@Ozel_Kod2,@Durumu,@Uretici
,@Aciklama2
)
你能幫助我嗎?
神聖低效和錯誤的代碼。您不需要運行單獨的select語句來爲每列設置變量。這裏的REAL問題是你的觸發器假設在插入表中只有一行。這不是sql server的工作原理。您需要通過執行單個插入語句來更改邏輯,而不用在觸發器中使用標量變量。 –