Hier der Trigger:
USE [myDB]
GO
/****** Object: Trigger [dbo].[IW_trCRM_FormatTelnr] Script Date:
01/13/2011 08:05:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER TRIGGER [dbo].[IW_trCRM_FormatTelnr]
ON [dbo].[CRM_ADRESSEN]
AFTER INSERT, UPDATE
AS
DECLARE @aID INT
DECLARE @Telnr nvarchar(20)
DECLARE @intTelnr nvarchar(20)
DECLARE iwrCursor CURSOR FOR
SELECT [CRM_ADRESSEN_ID],[TELEFON1]
FROM INSERTED
OPEN iwrCursor
FETCH NEXT FROM iwrCursor
INTO @aId, @Telnr
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE [CRM_ADRESSEN]
SET [Bemerkung] = 'xxx'
WHERE [CRM_ADRESSEN_ID] = @aID
FETCH NEXT FROM iwrCursor
INTO @aId, @Telnr
END
CLOSE iwrCursor
DEALLOCATE iwrCursor
Ich weiß ja nichtmal, auf welchem Datenbanksystem Du überhaupt arbeitest.
Cursor stehen bei mir aber in dem Ruf tendenziell langsam zu sein, was mit
der Anforderung an Trigger nicht gut zusammenpasst.
Sind Cursor in Triggern bei Deinem Datenbanksystem überhaupt erlaubt?
Warum setzt Du überhaupt einen Cursor ein?
Tut es nicht auch eine einfache Update-Anweisung:
Update [CRM_Adressen]
Set [Bemerkung] = 'xxx'
From [CRM-Adressen]
Inner Join inserted
On [CRM_Adressen].[CRM_Adressen_ID] = inserted.[CRM_Adressen_ID]
Wenn du sowieso bei der Bemerkung immer nur ein 'xxx' einfügen willst,
sollte das auch ohne Cursor gehen.
Gruß aus Kiel
Reiner
--
Ein Computer wird das tun,
was Du programmiert hast - nicht das, was Du willst.
(Murphy)