Bonjour,
je souhaite créer une table de gestion des erreurs. Lorsqu'une valeur en base a une valeur incorrecte (j'ai un traitement pour ça derrière), j'insère dans cette table la valeur incriminée ainsi que l'object_id de la table et la colonne correspondantes.
Pour être carré, j'aurais voulu ajouter une clé étrangère sur ces object_id. J'avais fait quelque chose comme ceci :
Ce qui ne fonctionne pas :
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 CREATE TABLE error_detail ( id_error INT NOT NULL, id_insert INT NOT NULL, object_id_table INT NOT NULL, object_id_column INT NOT NULL, valeur NVARCHAR(255) NOT NULL CONSTRAINT PK_grv_error PRIMARY KEY ( id_error, id_insert, object_id_table, object_id_column ), CONSTRAINT FK_sys_objects_object_id_table FOREIGN KEY ( object_id_table ) REFERENCES sysobjects ( id ), CONSTRAINT FK_sys_objects_object_id_column FOREIGN KEY ( object_id_column ) REFERENCES sysobjects ( id ) )
D'où ma première question : est-ce possible ?Msg 1767, Level 16, State 0, Line 3
La clé étrangère 'FK_sys_objects_object_id_table' fait référence à la table non valide 'sysobjects'.
Msg 1750, Level 16, State 0, Line 3
Impossible de créer la contrainte. Voir les erreurs précédentes.
Et si oui, quelle est "l'astuce" pour faire ce genre de chose ?
Merci d'avance !
Alban
Partager