Pregunta

Tengo una base de datos de componentes. Cada componente es de un tipo específico. Eso significa que hay una relación muchos-a-uno entre un componente y un tipo. Al eliminar un tipo, me gustaría eliminar todos los componentes que tiene una clave externa de ese tipo. Pero si no me equivoco, eliminación en cascada, se eliminará el tipo cuando se elimina el componente. ¿Hay alguna manera de hacer lo que he descrito?

¿Fue útil?

Solución

Esto es lo que se incluye en su mesa de componentes.

CREATE TABLE `components` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `typeId` int(10) unsigned NOT NULL,
    `moreInfo` VARCHAR(32), 
    -- etc
    PRIMARY KEY (`id`),
    KEY `type` (`typeId`)
    CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
      REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)

Sólo recuerde que usted tiene que utilizar el motor de almacenamiento InnoDB:. El motor de almacenamiento MyISAM por defecto no soporta claves externas

Otros consejos

Hay que definir sus restricciones de clave externa como ON DELETE CASCADE.

Nota: Es necesario utilizar el motor de almacenamiento InnoDB, que por defecto motor de almacenamiento MyISAM no soporta claves relación externa

.
CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment,
`name` int(11) NOT NULL,

PRIMARY KEY (`id`),
KEY `ids` (`ids`)
CONSTRAINT `foreign` FOREIGN KEY (`ids`)
  REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE
)

utilizar este sql

DELETE T1, T2 FROM T1 INNER JOIN T2 EN T1.key = T2.key Condición WHERE

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top