none
Triggerdeki bir NVARCHAR verisini nasıl C# yazdırabilirim? RRS feed

  • Soru

  • Merhaba iyi günler normalde ben Stored Procedurede bir veriyi OUTPUT yaparak Csharp tarafına geçirebiliyorum bunun gibi

    CREATE PROCEDURE [dbo].[AddArticle]
    (
    	@ReturnID INT OUTPUT
       ,@ArticleTitle NVARCHAR(50)
       ,@ArticleBody NVARCHAR(500)
       ,@ArticleCategoryID INT
       ,@ArticleAuthorID INT
    )
    
    AS
    BEGIN
    
    INSERT INTO Articles(ArticleTitle,ArticleBody,ArticleAuthorID,ArticleCategoryID)VALUES(@ArticleTitle,@ArticleBody,@ArticleAuthorID,@ArticleCategoryID)
    
    SET @ReturnID = @@IDENTITY
    
    END

    Ama benin yapmak istediğim Triggerdeki bir mesajı Csharp tarafına yazdırmak ben normalde

    DECLARE @myStr NVARCHAR(100) OUTPUT yazıyorum hata veriyor nasıl yazdırabilirim bu Trigger içine

    ALTER TRIGGER DeleteCate ON Categories
    INSTEAD OF DELETE
    AS
    BEGIN
    DECLARE @myID INT
    SELECT @myID=COUNT(*) FROM Articles
    WHERE ArticleCategoryID=(SELECT CategoryID FROM deleted)
    IF(@myID=1)
    PRINT CAST(@myID AS CHAR)+' ID one use on Articles Table you cannot delete it'
    ELSE
    DELETE FROM Categories WHERE CategoryID = (SELECT CategoryID FROM deleted)
    END

    19 Nisan 2013 Cuma 13:54

Yanıtlar

  • Trigger lar sizin tetiklemenizle değil, veritabanı işlemlerinin tetiklemesiyle çalışır. Örneğin siz bu örnekte tablodan veri siliyorsunuz. Siz delete komutu çalıştırırsınız sqlcommand vs ile, sql server da gider bu ilgili trigger ı çalıştırır. Ve bu trigger ile ilgili bir bilgiyi size dönmez, dönemez. Aynı oturumda bile çalışmıyor olabilirler. Bu yüzden output parametreleri vs tanımlayamazsınız.. Bu yapmak istediğiniz işlem için trigger doğru seçenek değil. Anladığım kadarıyla kategori silerken o kategoride bir nesnenin olup olmadığını kontrol ediyorsunuz. Bu kontrolü trigger ile yapmak yerine, silme işlemini bir stored procedure içinde yaparsanız, bu kontrolü yapıp, gerekli bilgiyi uygulamanıza aktarabilirsiniz. 

    Burak SARICA

    • Yanıt Olarak İşaretleyen Zerhan 19 Nisan 2013 Cuma 15:00
    19 Nisan 2013 Cuma 14:13