﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum / General .NET Discussion / .NET Forums  / Trigger and RowsAffected / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>forum@strataframe.net</webMaster><lastBuildDate>Fri, 21 Nov 2008 14:32:51 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Trigger and RowsAffected</title><link>http://forum.strataframe.net/Topic10613-14-1.aspx</link><description>Hi,&lt;br&gt;I am using dynamic SQL. I have trigger as below which will call another stored procedure. If I disable this trigger, RecordsAffected will be correct value. Any ideas?&lt;br&gt;&lt;br&gt;[codesnippet]CREATE TRIGGER [dbo].[T_PurchaseInvoices_UpdateQty] &lt;br&gt;   ON  [dbo].[PurchaseInvoices]&lt;br&gt;   FOR UPDATE&lt;br&gt;AS &lt;br&gt;BEGIN&lt;br&gt;	-- SET NOCOUNT ON added to prevent extra result sets from&lt;br&gt;	-- interfering with SELECT statements.&lt;br&gt;	SET NOCOUNT ON;&lt;br&gt;&lt;br&gt;    -- Insert statements for trigger here&lt;br&gt;&lt;br&gt;	IF UPDATE(LocationID) OR EXISTS(SELECT * FROM deleted)&lt;br&gt;		BEGIN&lt;br&gt;			SELECT * INTO #inserted_tmp FROM inserted&lt;br&gt;			SELECT * INTO #deleted_tmp FROM deleted&lt;br&gt;		&lt;br&gt;			EXEC spHeaderUpdateQty 'PurchaseInvoiceDetails', 'PInvoiceID', default, '+', 'InStock'&lt;br&gt;		END&lt;br&gt;&lt;br&gt;	SET NOCOUNT OFF&lt;br&gt;&lt;br&gt;END&lt;br&gt;&lt;br&gt;CREATE PROCEDURE [dbo].[spHeaderUpdateQty]&lt;br&gt;    @tablename VARCHAR(100),&lt;br&gt;    @primarykey VARCHAR(100),&lt;br&gt;	@locationfield VARCHAR(100) = 'LocationID',&lt;br&gt;    @addminus CHAR(1),&lt;br&gt;	@uom VARCHAR(20) = ''&lt;br&gt;AS&lt;br&gt;&lt;br&gt;BEGIN&lt;br&gt;    DECLARE&lt;br&gt;           @row_count       INT,&lt;br&gt;           @error_number    INT,&lt;br&gt;           @error_message   VARCHAR(255),&lt;br&gt;           @sql VARCHAR(4000)&lt;br&gt;          &lt;br&gt;    SET NOCOUNT ON;&lt;br&gt;&lt;br&gt;    SET @sql = 'SELECT i.ItemID &lt;br&gt;				FROM ' + @tablename + ' p INNER JOIN Items i ON p.ItemID = i.ItemID&lt;br&gt;				INNER JOIN #inserted_tmp t ON p.' + @primarykey + ' = t.' + @primarykey +&lt;br&gt;				' WHERE KeepStock = 1'&lt;br&gt;&lt;br&gt;	EXEC (@sql)&lt;br&gt;             &lt;br&gt;	SELECT @row_count = @@rowcount&lt;br&gt;&lt;br&gt;    IF (@row_count &gt; 0)&lt;br&gt;        BEGIN&lt;br&gt;			SET @sql = 'UPDATE [dbo].[ItemLocations]&lt;br&gt;						SET Qty = CASE p.Draft WHEN 1 THEN i.Qty ELSE i.Qty ' + @addminus + '&lt;br&gt;						ISNULL(dbo.GetQtyByUOM(t.UOMID, s.' + @uom + 'UOMID, t.Qty), t.Qty) END&lt;br&gt;						FROM [dbo].[ItemLocations] i, [dbo].[' + @tablename + '] t, [#inserted_tmp] p,&lt;br&gt;							[dbo].[Items] s&lt;br&gt;						WHERE s.ItemID = t.ItemID AND s.KeepStock = 1 AND &lt;br&gt;								p.' + @primarykey + ' = t.' + @primarykey + &lt;br&gt;								' AND i.ItemID = t.ItemID AND i.LocationID = p.' + @locationfield&lt;br&gt;&lt;br&gt;			EXEC (@sql)&lt;br&gt;&lt;br&gt;			SELECT @row_count = @@rowcount&lt;br&gt;			IF @row_count = 0&lt;br&gt;				BEGIN&lt;br&gt;					SELECT @error_number=50001,&lt;br&gt;						   @error_message='No item qty is updated.'&lt;br&gt;						   GOTO error&lt;br&gt;				END&lt;br&gt;			ELSE&lt;br&gt;				PRINT 'Qty updated'&lt;br&gt;	END&lt;br&gt;        &lt;br&gt;	SET @sql = 'SELECT i.ItemID &lt;br&gt;				FROM ' + @tablename + ' p INNER JOIN Items i ON p.ItemID = i.ItemID&lt;br&gt;				INNER JOIN #deleted_tmp t ON p.' + @primarykey + ' = t.' + @primarykey +&lt;br&gt;				' WHERE KeepStock = 1'&lt;br&gt;    &lt;br&gt;	EXEC (@sql)&lt;br&gt;&lt;br&gt;	SELECT @row_count = @@rowcount&lt;br&gt;&lt;br&gt;    IF (@row_count &gt; 0)&lt;br&gt;		BEGIN&lt;br&gt;			IF (@addminus = '+')&lt;br&gt;				BEGIN&lt;br&gt;					SET @addminus = '-'&lt;br&gt;				END&lt;br&gt;			ELSE&lt;br&gt;				BEGIN&lt;br&gt;					SET @addminus = '+'&lt;br&gt;				END&lt;br&gt;&lt;br&gt;			SET @sql = 'UPDATE [dbo].[ItemLocations]&lt;br&gt;						SET Qty = CASE p.Draft WHEN 1 THEN i.Qty ELSE i.Qty ' + @addminus + ' &lt;br&gt;						ISNULL(dbo.GetQtyByUOM(t.UOMID, s.' + @uom + 'UOMID, t.Qty), t.Qty) END&lt;br&gt;						FROM [dbo].[ItemLocations] i, [dbo].[' + @tablename + '] t, [#deleted_tmp] p,&lt;br&gt;							[dbo].[Items] s&lt;br&gt;						WHERE s.ItemID = t.ItemID AND s.KeepStock = 1 AND&lt;br&gt;								p.' + @primarykey + ' = t.' + @primarykey + &lt;br&gt;								' AND i.ItemID = t.ItemID AND i.LocationID = p.' + @locationfield&lt;br&gt;&lt;br&gt;			EXEC (@sql)&lt;br&gt;&lt;br&gt;			SELECT @row_count = @@rowcount&lt;br&gt;			IF @row_count = 0&lt;br&gt;				BEGIN&lt;br&gt;					SELECT @error_number=50001,&lt;br&gt;						   @error_message='No item qty is reverted.'&lt;br&gt;						   GOTO error&lt;br&gt;				END&lt;br&gt;			ELSE&lt;br&gt;				PRINT N'Qty reverted.'&lt;br&gt;		END&lt;br&gt;&lt;br&gt;	SET NOCOUNT OFF&lt;br&gt;&lt;br&gt;    RETURN&lt;br&gt;&lt;br&gt;/*  Error Handling  */&lt;br&gt;error:&lt;br&gt;      RAISERROR @error_number @error_message&lt;br&gt;      ROLLBACK TRANSACTION&lt;br&gt;&lt;br&gt;      SET NOCOUNT OFF&lt;br&gt;&lt;br&gt;END&lt;br&gt;[/codesnippet]</description><pubDate>Mon, 30 Jul 2007 09:58:03 GMT</pubDate><dc:creator>Chan</dc:creator></item><item><title>RE: Trigger and RowsAffected</title><link>http://forum.strataframe.net/Topic10613-14-1.aspx</link><description>If you want the number of affected records to be returned by the update sproc, but not the trigger, then call SET NOCOUNT ON at the top of the trigger and SET NOCOUNT OFF at the bottom of the trigger and call SET NOCOUNT OFF at the top of your UPDATE sproc and SET NOCOUNT ON at the bottom of the update sproc.</description><pubDate>Mon, 30 Jul 2007 09:08:07 GMT</pubDate><dc:creator>Ben Chase</dc:creator></item><item><title>RE: Trigger and RowsAffected</title><link>http://forum.strataframe.net/Topic10613-14-1.aspx</link><description>Hi,&lt;br&gt;I tried to SET NOCOUNT ON but doesn't work.&lt;br&gt;&lt;br&gt;Any ideas?</description><pubDate>Sun, 29 Jul 2007 05:38:35 GMT</pubDate><dc:creator>Chan</dc:creator></item><item><title>Trigger and RowsAffected</title><link>http://forum.strataframe.net/Topic10613-14-1.aspx</link><description>Hi,&lt;br&gt;How to prevent anything inside trigger affect value SqlDataReader.RecordsAffected?&lt;br&gt;&lt;br&gt;Thank you</description><pubDate>Sun, 29 Jul 2007 05:34:27 GMT</pubDate><dc:creator>Chan</dc:creator></item></channel></rss>