Create trigger pour insérer la valeur d'une colonne dans une autre colonne de la même table SQL Server 2005

Comment créer un déclencheur à insérer une valeur dans une colonne de même que la valeur d'une autre colonne de la même table de une nouvelle ligne dans la table.

Supposons que j'ai le tableau comme ci-dessous

ColumnA | ColumnB

Je veux colonneb de la valeur à insérer dans ColumnA dès que la ligne est insérée dans la table ou colonneb valeur est mise à jour . Mais il ne devrait pas être vice-versa ie insérer columnA valeur dans colonneb

.Ci-dessous le code de poignées INSÉRER seulement , s'il vous plaît aider moi comment faire pour gérer à la fois d'Insertion et de mise à jour de la table, c'est à dire quand colonneb valeur est insérée ou mise à jour.

CREATE TRIGGER inserupdate
   ON  triggertestTable
   AFTER INSERT,UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here
    declare @value int

    select @value=columnB from inserted

    update triggertestTable
    set columnA=@value

END
GO

Cela fonctionne bien si les valeurs insérées comme ci-dessous

insert into triggertestTable(columnB) values('xyz')

Colonneb valeur est insérée dans columnA

ColumnA | ColumnB
  xyz   |  xyz 

Mais nulle valeur est mise à jour dans les deux si une autre application insère la valeur de columnA

 insert into triggertestTable(columnA) values('pqr')

Maintenant enregistrements sont

ColumnA | ColumnB
  xyz   |  xyz 
  NULL  |  NULL

Le bon jeu d'enregistrements doit être comme ci-dessous

  ColumnA   | ColumnB
      xyz   |  xyz 
      pqr   |  NULL

Comment résoudre ce problème.

Si Colonneb est mis à jour, alors (1) ColumnA doit être, aussi, mis à jour ou (2) ColumnA doit être mis à jour uniquement si les anciennes et les nouvelles valeurs de Colonneb sont différentes? Qu'advient-il si sont insérés les valeurs dans les deux colonnes (ColumnA et ColumbB) ?

OriginalL'auteur Mudassir Hasan | 2013-07-25