No puedo crear las claves externas con ON DELETE SET DEFAULT
, pero si uso ON DELETE CASCADE
entonces todo funciona aquí está mi sqlNo se puede crear la clave externa con ON DELETE SET DEFAULT
CREATE TABLE person(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) UNIQUE
);
CREATE TABLE habits(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
habit VARCHAR(100) UNIQUE
);
INSERT INTO `test`.`habits` (`customer_id`, `habit`) VALUES (NULL, 'smoking'), (NULL, 'drinking');
INSERT INTO `test`.`person` (`customer_id`, `name`) VALUES (NULL, 'John'), (NULL, 'Steve');
CREATE TABLE foreigner(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
customer VARCHAR(100) DEFAULT 'John',
habbit VARCHAR(100) DEFAULT 'smoking',
FOREIGN KEY (customer) REFERENCES person(name) ON DELETE SET DEFAULT ON UPDATE CASCADE,
FOREIGN KEY (habbit) REFERENCES habits(habit) ON DELETE SET DEFAULT ON UPDATE CASCADE
);
Es extraño que funciona si use ON DELETE CASCADE
.... alguna idea?
Así, en lugar de 5 (o cualquier número de olther) filas que se eliminan de la tabla 'foreigner' (debido a los efectos en cascada), que quiere terminar con cinco (casi) idénticos filas con' (cliente, habbit) = ('John', fumando) '. ¿Porqué querrías eso? –
Y no pude evitar mencionar las 3 columnas inútiles 'customer_id'. –
la mesa con esos valores es sólo un ejemplo - en realidad no tengo mucho más grandes tablas con los valores y las filas que puede incluso ser útiles :) Gracias – fjckls