Mysql
 sql >> Database >  >> RDS >> Mysql

Alter table per dare un vincolo di chiave esterna

Non stai aggiungendo un vincolo in questa istruzione, stai aggiungendo vincolos :ciascuna delle due clausole FOREIGN KEY significa un vincolo separato. Tuttavia, secondo il manuale , dovresti essere in grado di aggiungere tutti i vincoli di chiave esterna in una singola istruzione ALTER TABLE quanto necessario. Devi solo includere ADD prima di ogni costrizione.

Nota che i nomi dei vincoli si applicano individualmente ai vincoli che stai aggiungendo, quindi potresti voler specificare CONSTRAINT name per la seconda chiave esterna se vuoi che abbia un nome specifico. Lo stesso con ON UPDATE/ON DELETE :si applicano alla chiave esterna che li precede direttamente.

Quindi, l'affermazione corretta potrebbe assomigliare a questa:

ALTER TABLE users_role_map

ADD CONSTRAINT FK_users_role_map1
FOREIGN KEY (email) REFERENCES usert(email)
ON UPDATE CASCADE
ON DELETE CASCADE,

ADD CONSTRAINT FK_users_role_map2
FOREIGN KEY (id) REFERENCES rolet(id)
ON UPDATE CASCADE
ON DELETE CASCADE;