#mysql
#mysql
Вопрос:
Эй, ребята, итак, я пытаюсь удалить запись. Однако не позволяет мне из-за ограничения внешнего ключа
Операция, которую я пытаюсь выполнить (все номера карт являются поддельными)
DELETE FROM payment_method
WHERE card_no = 42218345;
структуры таблиц:
CREATE TABLE payment_details (
card_no int(8) NOT NULL,
customer_id int(50) NOT NULL AUTO_INCREMENT,
CVV int(3) NOT NULL,
card_type ENUM ('Visa', 'Amex', 'American Express', 'Mastercard') NOT NULL,
expiry_date DATE NOT NULL,
PRIMARY KEY(card_no),
KEY customer_idfk1 (customer_id),
CONSTRAINT customer_idfk1 FOREIGN KEY (customer_id) REFERENCES customers (customer_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
и
CREATE TABLE customers (
customer_id int(50) NOT NULL AUTO_INCREMENT,
fname varchar(20) NOT NULL,
lname varchar(20) NOT NULL,
dateOfBirth date NOT NULL,
address varchar(30) NOT NULL,
city varchar(20) NOT NULL,
county ENUM('Armagh','Carlow','Cavan','Clare','Cork','Derry','Donegal','Down','Dublin','Fermanagh','Galway','Kerry','Kildare','Kilkenny','Laois','Leitrim','Limerick','Longford','Louth','Mayo','Meath','Monaghan','Offaly','Roscommon','Sligo','Tipperary','Tyrone','Waterford','Westmeath','Wexford','Wicklow') NOT NULL,
phone int(10) NOT NULL,
email varchar(20) NOT NULL,
payment_method ENUM ('Visa', 'Amex', 'Cash', 'American Express', 'Mastercard') NOT NULL,
valid_licence varchar(5) NOT NULL,
status varchar(10),
PRIMARY KEY (customer_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ошибка:
1451 — Не удается удалить или обновить родительскую строку: сбой ограничения внешнего ключа (
g00337857abu
.payment_details
, CONSTRAINTcustomer_idfk1
ССЫЛКИ на ВНЕШНИЙ КЛЮЧ (
customer_id
)customers
(customer_id
))
Кто-нибудь знает, почему это не позволяет мне удалить эту запись..
Я обнаружил 1-ю ошибку
Теперь я пытаюсь удалить из таблицы customers
DELETE FROM customers
WHERE customer_id = 1
ошибка — #1451 — Не удается удалить или обновить родительскую строку: внешний ключ
сбой ограничения (g00337857abu
.payment_details
, ОГРАНИЧЕНИЕ
customer_idfk1
ССЫЛКИ НА ВНЕШНИЙ КЛЮЧ (customer_id
)customers
(customer_id
))
Комментарии:
1. Что
payment_method
? Третья таблица?2. На самом деле я только что заметил это. Нет, это не так. предполагается, что она показывает платеж из payment_details tbl — что вы рекомендуете делать
3. Из какой таблицы вы удаляете?
4. payment_details
5. Посмотрите на свой код.