Je suis en train de faire une base sous MySQL: 5.0.32.
J'aimerai avoir 2 tables auditables.
reportage représente les reportage photo dont la cle est Id, Audit_Version et Audit_Current (je ne voudrais que les versions courantes dans cette table).
reportage_HIST est l'historique de reportage (je veux la version courante de chaque reportage et chaque version antérieure).
Les tables se créent bien via mysql et j'ai tenté de remplir avec 1 tuple la table reportage (via le formulaire de mysql). J'ai été surpris de constater que reportage_HIST est restée vide... Vu la contrainte entre les 2, je ne comprends pas.
CREATE TABLE Reportage (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(25) NOT NULL,
Audit_Current VARCHAR(1) NOT NULL DEFAULT 'Y',
Audit_DateTime DATETIME NOT NULL,
Audit_User VARCHAR(25) NOT NULL,
Audit_Version INT NOT NULL DEFAULT 1,
Audit_Status ENUM('DONE','VER','PENDING SAVE','PENDING CANCEL','CANCEL'),
Audit_Action ENUM ('SAVE','ACCEPT','DO','CANCEL','REJECT'),
PRIMARY KEY(Id, Audit_Current, Audit_Version)) TYPE=INNODB;
CREATE TABLE Reportage_HIST (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(25) NOT NULL,
Audit_Current ENUM('Y','N'),
Audit_DateTime DATETIME NOT NULL,
Audit_User VARCHAR(25) NOT NULL,
Audit_Version INT NOT NULL DEFAULT 1,
Audit_Status ENUM('DONE','VER','PENDING SAVE','PENDING CANCEL','CANCEL'),
Audit_Action ENUM ('SAVE','ACCEPT','DO','CANCEL','REJECT'),
PRIMARY KEY(Id, Audit_Current, Audit_Version),
FOREIGN KEY (Id, Audit_Current, Audit_Version)
REFERENCES Reportage(Id, Audit_Current, Audit_Version)
ON UPDATE CASCADE ON DELETE RESTRICT
) TYPE=INNODB;
ps:J'ai essayé avec
FOREIGN KEY (Id, Audit_Current, Audit_Version)
REFERENCES Reportage(Id, Audit_Current, Audit_Version)
ON UPDATE CASCADE ON DELETE CASCADE ON INSERT RESTRICT
mais j'ai un beau message d'erreur.Est ce que je vais devoir à chaque insert dans reportage faire son homologue dans reportage_hist? N y a t il pas un moyen que le sgbd se débrouille tout seul?
Merci