Problème d'insertion sur table avec une unique colonne identity
Bonjour,
Comment insérer plusieurs lignes avec un seul ordre INSERT dans une table comportant juste une colonne identity ?
Pour insérer une ligne, c'est facile :
Code:
INSERT INTO LA_TABLE DEFAULT VALUES
Mais je voudrais pouvoir faire des insertions ensemblistes et non itératives...
Un exemple concret avec le DDL suivant qui comprend la table posant problème (T_NATIONALITE_NAT), une table qui la référence (T_NATIONALITE_LNG_NAL) et une vue qui fait la jointure des deux (V_NATIONALITE_VNT) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| CREATE TABLE [dbo].[T_NATIONALITE_NAT](
[NAT_ID] [int] IDENTITY(1,1) NOT NULL,
PRIMARY KEY CLUSTERED
(
[NAT_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[T_NATIONALITE_LNG_NAL](
[NAT_ID] [int] NOT NULL,
[LNG_ID] [tinyint] NOT NULL,
[NAL_LIB] [varchar](50) NOT NULL,
PRIMARY KEY CLUSTERED
(
[NAT_ID] ASC,
[LNG_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[T_NATIONALITE_LNG_NAL] WITH CHECK ADD CONSTRAINT [FK_T_NATIONALITE_LNG_NAL_LNG_ID] FOREIGN KEY([LNG_ID])
REFERENCES [dbo].[T_LANGUAGE_LNG] ([LNG_ID])
GO
ALTER TABLE [dbo].[T_NATIONALITE_LNG_NAL] CHECK CONSTRAINT [FK_T_NATIONALITE_LNG_NAL_LNG_ID]
GO
ALTER TABLE [dbo].[T_NATIONALITE_LNG_NAL] WITH CHECK ADD CONSTRAINT [FK_T_NATIONALITE_LNG_NAL_NAT_ID] FOREIGN KEY([NAT_ID])
REFERENCES [dbo].[T_NATIONALITE_NAT] ([NAT_ID])
GO
ALTER TABLE [dbo].[T_NATIONALITE_LNG_NAL] CHECK CONSTRAINT [FK_T_NATIONALITE_LNG_NAL_NAT_ID]
GO
CREATE VIEW [dbo].[V_NATIONALITE_VNT]
AS
SELECT
NAT.NAT_ID,
LNG_ID,
NAL_LIB
FROM
DBO.T_NATIONALITE_NAT NAT
INNER JOIN DBO.T_NATIONALITE_LNG_NAL NAL
ON NAT.NAT_ID = NAL.NAT_ID
GO |
L'idée est donc de placer un trigger instead of insert et update sur la vue pour permettre d'effectuer les insertions et mises à jour correctement (qui à priori ne devraient pas être nombreuses, je vous l'accorde).
Mais je bloque sur l'instruction à utiliser pour insérer de manière ensembliste dans la table dont le suffixe est NAT...