Você já tentou:
UPDATE table1 SET reference=NULL;
DELETE FROM table2 WHERE id=1;
DELETE FROM table1 WHERE id=1;
Ao limpar a referência, a restrição FK não deve mais ser um problema.
Excluir qualquer registro deles relatará um erro como este:
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails
Como superar esse problema?
Você já tentou:
UPDATE table1 SET reference=NULL;
DELETE FROM table2 WHERE id=1;
DELETE FROM table1 WHERE id=1;
Ao limpar a referência, a restrição FK não deve mais ser um problema.
Você tem duas opções. Uma é limpar a referência, como Gorilla apontou em seu post. Você faz isso definindo a referência como nula ou algo semelhante e, em seguida, exclua as postagens na ordem correta, mas isso não é o que você normalmente deseja fazer.
Em vez disso, você provavelmente deseja fazer uma exclusão em cascata, mas seu esquema não está configurado corretamente para isso. A exclusão em cascata significa que as postagens que fizerem referência à postagem que você tentar excluir também serão removidas.
A sintaxe para configurar uma tabela para dar suporte a cascatas é semelhante a esta:
CREATE TABLE car(
car_id serial PRIMARY KEY,
owner_id integer NOT NULL REFERENCES owner ON DELETE CASCADE);
Se você configurar suas tabelas como essa, a exclusão da postagem original (um proprietário no exemplo) resultará na exclusão de todas as referências de postagens (carros no exemplo). Você evitará ter que limpar as referências e remover todas as postagens manualmente.
Dependendo do tipo de banco de dados, você usa um comando ALTER TABLE para introduzir a exclusão em cascata em seu esquema.
Tags sql foreign-key