La base de données sur laquelle je travaille a le déclencheur d'insertion suivant. Le problème est que le déclencheur ne fonctionnera pas avec une insertion à plusieurs rangées. Lorsque j'essaie d'insérer plus d'une ligne à la fois, le message suivant s'affiche.Déclencheur d'insertion T-SQL
Msg 512, Niveau 16, État 1, Procédure _ti_UD06, Ligne 8
sous-requête retourné plus de 1 valeur. Ce n'est pas autorisée lorsque follows =, la sous-requête ! =, <, < =,>,> = ou lorsque la sous-requête est utilisé comme une expression . Je pense que le problème est avec l'instruction suivante retournera plus d'une valeur lorsque plusieurs lignes sont insérées.
Comment faire pour que ce déclencheur d'insertion fonctionne avec plusieurs lignes?
IF(SELECT PROGRESS_RECID FROM inserted) IS NULL
Il y a 2 colonnes dans la table, PROGRESS_RECID
et PROGRESS_RECID_IDENT_
. Je pense que est une colonne Identity
pour SQL Server. Le PROGRESS_RECID_INDENT
est utilisé par le serveur PROGRESS.
Si un nouvel enregistrement est inséré les contrôles de déclenchement pour voir si le PROGRESS_RECID
est nulle et réglez-le sur la inserted.Identity
ALTER trigger [dbo].[_ti_UD06] ON [dbo].[UD06] for insert as
begin
if (select PROGRESS_RECID from inserted) is NULL
begin
update t set PROGRESS_RECID = i.IDENTITYCOL
from UD06 t JOIN INSERTED i ON
t.PROGRESS_RECID_IDENT_ = i.PROGRESS_RECID_IDENT_
select convert (bigint, @@identity)
end
end
Voici la définition du tableau
CREATE TABLE [dbo].[UD06](
[Company] [nvarchar](8) NULL,
[Key1] [nvarchar](50) NOT NULL,
[Key2] [nvarchar](50) NULL,
[Key3] [nvarchar](50) NULL,
[Key5] [nvarchar](50) NULL,
[Character01] [nvarchar](max) NULL,
[Character02] [nvarchar](max) NULL,
[Character03] [nvarchar](max) NULL,
[Character04] [nvarchar](max) NULL,
[Character05] [nvarchar](max) NULL,
[Character06] [nvarchar](max) NULL,
[Character07] [nvarchar](max) NULL,
[Character08] [nvarchar](max) NULL,
[Character09] [nvarchar](max) NULL,
[Character10] [nvarchar](max) NULL,
[SysRowID] [nvarchar](36) NULL,
[SysRevID] [int] NULL,
[BitFlag] [int] NULL,
[GlobalUD06] [tinyint] NULL,
[GlobalLock] [tinyint] NULL,
[PROGRESS_RECID] [bigint] NULL,
[PROGRESS_RECID_IDENT_] [bigint] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
J'ai fait les changements, je ne reçois plus l'erreur, mais le PROGRESS_RECID est nul après l'insertion. – Kevin
@Kevin Nous aurions besoin de voir la définition de la table pour aller plus loin. – RBarryYoung
Voici la définition du tableau. – Kevin