我正在尝试创建一个触发器,在创建之前,我尝试在执行内部代码时对其进行测试。获取代码本身起作用,但触发器不起作用。代码如下:
USE [PMIDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[BRK_ÇEKME_KAP_INSERTED]
ON [dbo].[ATMATERIALTRANS]
FOR INSERT
AS BEGIN
DECLARE @RDATE DATE
DECLARE @MAKİNE VARCHAR(10)
DECLARE @OKUTULAN_BARKOD VARCHAR(20)
DECLARE @MIKTAR INT
DECLARE @WC_ID INT
SELECT * FROM ATMATERIALTRANS
DECLARE CUR CURSOR
FOR
SELECT TDATE, WORKCENTERS.CODE, ATMATERIALS.BARCODE, ATMATERIALS.AMOUNT, WC_ID FROM INSERTED T1
LEFT JOIN ATCOMPOSITIONS ON ATCOMPOSITIONS.ID=T1.COMPID
LEFT JOIN WORKCENTERS ON WORKCENTERS.ID=T1.WC_ID
LEFT JOIN ATMATERIALS ON ATMATERIALS.ID=ATCOMPOSITIONS.MATERIALID
WHERE T1.COMPID IS NOT NULL AND WORKCENTERS.CODE LIKE 'DD%'
OPEN CUR
FETCH NEXT FROM CUR INTO @RDATE, @MAKİNE, @OKUTULAN_BARKOD,@MIKTAR, @WC_ID
WHILE @@FETCH_STATUS=0 BEGIN
INSERT INTO BURAK..ÇEKME_KAP (TARİH,MAKİNE,OKUTULAN_BARKOD,MİKTAR, HAMMADDE_GCKOD)
VALUES
(@RDATE,
@MAKİNE,
@OKUTULAN_BARKOD,
@MIKTAR, 'G')
UPDATE BURAK..MALKABUL_BARKOD SET BURAK..MALKABUL_BARKOD.KULLANILDI =1 WHERE BURAK..MALKABUL_BARKOD.BARKOD=@OKUTULAN_BARKOD
FETCH NEXT FROM CUR INTO @RDATE, @MAKİNE, @OKUTULAN_BARKOD,@MIKTAR, @WC_ID
END
CLOSE CUR
DEALLOCATE CUR
END发布于 2018-06-06 19:38:24
实现。
在编写触发器以通过触发器将结果返回给应用程序之前,请参考以下语句。
“触发触发器时,结果将返回给调用应用程序,就像存储过程一样。若要防止由于触发器激发而将结果返回到应用程序,请不要包括返回结果的SELECT语句或在触发器中执行变量赋值的语句。包含向用户返回结果的SELECT语句或执行变量赋值的语句的触发器需要特殊处理;这些返回的结果必须写入允许修改触发器表的每个应用程序中。如果必须在触发器中进行变量赋值,请在触发器的开头使用SET NOCOUNT语句以防止返回任何结果集。“
https://stackoverflow.com/questions/50718529
复制相似问题