Tenho no caso exemplo, arquivos que pertencem a um imóvel, e uma tabela relacionamento entre eles.
Tabelas:
arquivo,
arquivos_imovel (arquivoId, imovelId),
imovel
Quando deletar o arquivo, preciso que a forengKey arquivoId da tabela arquivos_imovel seja mudado para NULL.
O objetivo é deletar o arquivo e ter uma referencia na tabela arquivos_imovel pra saber que ele existiu.
Tentei na tabela arquivos_imovel colocar.
arquivoId: {
type: DataTypes.INTEGER,
allowNull: true,
primaryKey: false,
onDelete: 'SET NULL'
},
ou no próprio relacionamento.
imovel.belongsToMany(models.arquivo, {
through: models.arquivos_imovel,
onDelete: 'SET NULL',
foreignKey: {
name: 'imovelId',
allowNull: true,
primaryKey: false
}
})
Nenhum deles funcionou. Ele gera o sql
CREATE TABLE IF NOT EXISTS `arquivos_imovel` (`nomeComodo` VARCHAR(128), `arquivoId` INTEGER , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `imovelId` INTEGER , PRIMARY KEY (`arquivoId`, `imovelId`), FOREIGN KEY (`arquivoId`) REFERENCES `arquivo` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY (`imovelId`) REFERENCES `imovel` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;