Bonjour,

Je suis devant une impasse (et je sens que ça va encore être un truc con^^) depuis 30 minutes alors je me tourne vers vous.

Voici le contexte :

Dans une DB en cours de développement pour la gestion des vols dans un magasin, je m'aperçois que j'ai oublié la table des types d'antivols. Un antivol n'a, pour le moment, qu'un nom comme propriété mais celui-ci doit être en 2 langues.

J'ai donc les tables suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
CREATE TABLE [dbo].[T_TYPE_ANTITHEFT_TNT](
    [TNT_ID] [int] IDENTITY(1,1) NOT NULL,
 CONSTRAINT [PK_T_TYPE_ANTITHEFT_TAN] PRIMARY KEY CLUSTERED 
(
    [TNT_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_TYPE_ANTITHEFT_LNG_TAL](
    [TNT_ID] [int] NOT NULL,
    [LNG_ID] [tinyint] NOT NULL,
    [TAL_LIB] [varchar](50) NOT NULL,
 CONSTRAINT [PK_T_TYPE_ANTITHEFT_LNG_TAL] PRIMARY KEY CLUSTERED 
(
    [TNT_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
 
ALTER TABLE [dbo].[T_TYPE_ANTITHEFT_LNG_TAL]  WITH CHECK ADD  CONSTRAINT [FK_T_TYPE_ANTITHEFT_LNG_TAL_T_LANGUAGE_LNG] FOREIGN KEY([LNG_ID])
REFERENCES [dbo].[T_LANGUAGE_LNG] ([LNG_ID])
GO
 
ALTER TABLE [dbo].[T_TYPE_ANTITHEFT_LNG_TAL] CHECK CONSTRAINT [FK_T_TYPE_ANTITHEFT_LNG_TAL_T_LANGUAGE_LNG]
GO
 
ALTER TABLE [dbo].[T_TYPE_ANTITHEFT_LNG_TAL]  WITH CHECK ADD  CONSTRAINT [FK_T_TYPE_ANTITHEFT_LNG_TAL_T_TYPE_ANTITHEFT_TNT] FOREIGN KEY([TNT_ID])
REFERENCES [dbo].[T_TYPE_ANTITHEFT_TNT] ([TNT_ID])
GO
 
ALTER TABLE [dbo].[T_TYPE_ANTITHEFT_LNG_TAL] CHECK CONSTRAINT [FK_T_TYPE_ANTITHEFT_LNG_TAL_T_TYPE_ANTITHEFT_TNT]
GO
Le tout regroupé à l'aide de la vue que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
CREATE VIEW [dbo].[V_TYPE_ANTITHEFT_VTA] 
AS
SELECT
        TNT.TNT_ID, TAL1.TAL_LIB AS 'VTA_LIB_FR', TAL2.TAL_LIB AS 'VTA_LIB_NL'
FROM
        DBO.T_TYPE_ANTITHEFT_TNT TNT
            LEFT JOIN DBO.T_TYPE_ANTITHEFT_LNG_TAL TAL1
                ON    TNT.TNT_ID = TAL1.TNT_ID
                AND TAL1.LNG_ID = 1
            LEFT JOIN DBO.T_TYPE_ANTITHEFT_LNG_TAL TAL2
                ON    TNT.TNT_ID = TAL2.TNT_ID
                AND TAL2.LNG_ID = 2
GO
Vu qu'on a une vue portant sur plusieurs tables, il me faut donc des triggers pour les opérations insert/update/delete.

Pour update et delete, pas de souci.

Par contre, je bloque pour l'insert.

Les seules solutions qui me viennent sont des solutions qui ne fonctionne que pour l'insertion d'une ligne à la fois... Or on travaille avec des ensembles...

Voici ce qui me bloque :

Pour insérer une ligne dans la table T_TYPE_ANTITHEFT_TNT, j'utilise le code INSERT INTO dbo.T_TYPE_ANTITHEFT_TNT DEFAULT VALUES;. Mais pour plusieurs lignes ?


Une fois les insertions faites dans cette table, comment je fais l'association avec mes libellés ? Je sens un problème pour m'assurer que des libellés FR et NL d'une même ligne vont bien recevoir le même TNT_ID.