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 :
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
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
Vu qu'on a une vue portant sur plusieurs tables, il me faut donc des triggers pour les opérations insert/update/delete.
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
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 :
1°
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 ?
2°
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.
Partager