Estoy tratando de hacer que los grupos en mi sistema de mensajería eliminen el grupo, los mensajes y los miembros que usan el error de eliminación en cascada. Mi código :
"CREATE TABLE `groups` ( groups_id int AUTO_INCREMENT PRIMARY KEY, owner_id int NOT NULL, group_name varchar(255) )", "CREATE TABLE `groups_members` ( groups_members_id int AUTO_INCREMENT PRIMARY KEY, groups_id int NOT NULL, user_id int, FOREIGN KEY (groups_id) REFERENCES groups(groups_id) DELETE ON CASCADE )", "CREATE TABLE `groups_contents` ( groups_contents_id int AUTO_INCREMENT PRIMARY KEY, user_id int, groups_id int, date_time DATETIME, message varchar(1000), FOREIGN KEY (groups_id) REFERENCES groups(groups_id) DELETE ON cascade )" El error que me da: ERROR EN LA DECLARACIÓN [CREATE TABLE groups_members (groups_members_id int AUTO_INCREMENT PRIMARY KEY, groups_id int NOT NULL, user_id int, CONSTRAINT banana FOREIGN KEY (groups_id) REFERENCES groups(groups_id) DELETE ON CASCADE )] Tiene un error en su sintaxis SQL; verifique el manual que corresponde a la versión de su servidor MariaDB para conocer la sintaxis correcta para usar cerca de 'DELETE ON CASCADE)' en la línea 8
Tienes algunos errores menores en tu código.
Grupos es una palabra reservada, por lo que debe estar entre comillas graves.
La sintaxis es ON DELETE y no DELETE ON
CREATE TABLE `groups` ( groups_id INT AUTO_INCREMENT PRIMARY KEY, owner_id INT NOT NULL, group_name VARCHAR(255) ); CREATE TABLE `groups_members` ( groups_members_id int AUTO_INCREMENT PRIMARY KEY, groups_id int NOT NULL, user_id int, FOREIGN KEY (groups_id) REFERENCES `groups` (groups_id) ON DELETE CASCADE ); CREATE TABLE `groups_contents` ( groups_contents_id int AUTO_INCREMENT PRIMARY KEY, user_id int, groups_id int, date_time DATETIME, message varchar(1000), FOREIGN KEY (groups_id) REFERENCES `groups` (groups_id) ON DELETE cascade );