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 :
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
  )
)
Ce qui ne fonctionne pas :
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.
D'où ma première question : est-ce possible ?
Et si oui, quelle est "l'astuce" pour faire ce genre de chose ?

Merci d'avance !

Alban