2013-03-15 2 views
0

У меня есть две таблицы: users и «счета». В bills в качестве внешнего ключа до users.При удалении каскада не работает

Я хочу автоматически удалять строки из таблицы bills при удалении из таблицы users. Для этого я изменяю таблицу со следующим запросом, но она не удаляет запись из таблицы счетов.

Мой альтер утверждение:

ALTER TABLE bills 
ADD CONSTRAINT fk_pid 
FOREIGN KEY (pid) 
REFERENCES users(id) 
ON DELETE CASCADE 

здесь pid является внешним ключом в таблице счетов, в то время как идентификатор первичный ключ в таблице пользователей

Пожалуйста, помогите мне решить вопрос выше, спасибо заранее.

+1

Пожалуйста, покажите CRAETE TABLE счет, пользователь. – Devart

+0

использование создать вместо альтер CREATE TABLE счета ADD CONSTRAINT fk_pid FOREIGN KEY (ИДП) ЛИТЕРАТУРЫ пользователей (ID) ON DELETE CASCADE – Rahul

+0

взглянуть на эту ссылку - [MySQL внешнего ключа «ON DELETE CASCADE» через 3 таблицы] (http://stackoverflow.com/questions/8878453/mysql-foreign-key-on-delete-cascade-across-3-tables/8878843#8878843). – Devart

ответ

1

Использование создать вместо альтер, в противном случае ваш синтаксис нормально

Create TABLE bills(
Your columns details 
------ 
------ 
ADD CONSTRAINT fk_pid 
FOREIGN KEY (pid) 
REFERENCES users(id) 
ON DELETE CASCADE 
) 

Попробуйте это ..

Если это не сработает, то попробуйте для этой вещи, а также. , если ваши обе таблицы имеют неправильный первичный ключ и проблему с внешним ключом, тогда вы не можете добавить Delete Cascade. Для этого вам нужно исправить эту проблему. Если у вас нет первичного ключа в вашей таблице пользователей, и вы используете тот же идентификатор в таблице счетов в качестве внешнего ключа, тогда вы не можете добавить каскад в таблицу счетов. Для этого удалите этот ключ из таблицы счетов, а затем попробуйте добавить каскадный скрипт с Alter.I имел ту же проблему, но я использую этот способ, и он работал. Надеюсь, будет работать и на вас. Спасибо

+1

Синтаксис CREATE TABLE требует, по крайней мере, столбцов. – Devart

+0

Я не хочу, чтобы снова создать таблицу, я хочу применить ее на моей существующей таблице, поэтому я использую команду alter – Danny

+0

попробовать второй вариант. Я думаю, что это будет проблема несоответствия ключей. Проверьте, что весь ваш внешний ключ в счетах таблица имеет первичный ключ в таблице пользователей или нет. – Rahul

0

Я думаю, this solution for create может помочь вам разобраться, чего на самом деле не хватает.

Пройдите через него и попробуйте настроить его в соответствии с вашими потребностями, так как вы не предоставили достаточно деталей вместе со своим вопросом.

Я подозреваю, что он должен сделать что-то с созданием заявлением таблицы

ИЛИ попробовать это для ALTER1 ИЛИ ALTER2

+0

Я не хочу снова создавать таблицу, я хочу применить ее на моей существующей таблице, поэтому я использую команду alter – Danny

+0

. Посмотрите на мой ОБНОВЛЕНО ответ. Я думаю, это поможет вам найти, как использовать ALTER .. Как вы 't предоставил достаточно подробностей для ваших таблиц. Вы должны понять это из этой ссылки .. Надеюсь, это поможет вам ... – DeltaCap

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