2016-06-23 2 views
2

У меня есть 2 таблицыНевозможно обновить/удалить/усечь таблицу с внешним ключом

CREATE TABLE table1 (
    id1 int(10) NOT NULL PRIMARY KEY, 
    name varchar(20) 
);  

CREATE TABLE table2 (
    newid int(10) NOT NULL PRIMARY KEY, 
    f_id int(10) 
); 

Теперь я добавил внешний ключ Ограничить

ALTER TABLE table2 
ADD CONSTRAINT fk_id FOREIGN KEY (f_id) REFERENCES table1 (id) 
ON DELETE CASCADE ON UPDATE CASCADE; 

Теперь проблема я не могу обновить/удалить/усечь таблицу 'table2'. Какая здесь проблема и как ее решить?

+1

Определения «не удалось» с сообщением об ошибке, воспроизводимой сценарии или что-то. – Pred

ответ

0

Внешний ключ обеспечивает соблюдение ссылочной целостности, попытайтесь удалить запись из таблицы 1, а затем таблица 2. Вы не можете усечь таблицу, которая оказывает FK

+0

Таблица 1 - это ** ссылка на таблицу **, удаление из нее не требует записей в таблице2, ссылающихся на идентификатор в таблице 1 или на флаге удаления. – Pred

+0

Могу ли я обновить запись в таблице2? Если нет, какие изменения я должен сделать, чтобы обновить записи таблицы2? – Hari

+0

@Hari С информацией, предоставленной вами в вопросе, мы понятия не имеем. Вы отправили несколько DDL, полный синтаксических ошибок, сценарий и никаких сообщений об ошибках/примерных данных и запрос для воспроизведения вашей проблемы. Да, вы должны обновить запись, если не хотите обновлять столбец ссылок до несуществующего значения. – Pred

Смежные вопросы