CREATE TABLE users(
USERID BIGINT AUTO_INCREMENT,
FNAME CHAR(50),
LNAME CHAR(50),
EMAIL CHAR (100),
PHONE CHAR (50),
PRIMARY KEY (USER_ID),
UNIQUE KEY EMAIL (EMAIL),
UNIQUE KEY PHONE (PHONE)
) ENGINE=InnoDB CHARSET=utf8mb4;
CREATE TABLE items(
ITEMS_ID BIGINT AUTO_INCREMENT,
USERID BIGINT,
ITEMS_TO BIGINT,
ITEMS_FROM BIGINT,
ACCEPTED_ITEMS BIGINT,
PRIMARY KEY (ITEMS_ID),
FOREIGN KEY (USERID) REFERENCES users(USERID),
FOREIGN KEY (ITEMS_TO) REFERENCES users(USERID),
FOREIGN KEY (ITEMS_FROM) REFERENCES users(USERID),
FOREIGN KEY (ACCEPTED_ITEMS) REFERENCES users(USERID)
) ENGINE=InnoDB CHARSET=utf8mb4;
Я получаю эту ошибку
DBD :: mysql :: st выполнить не удалось: не удается добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (`db701``items`, CONSTRAINT `items_ibfk_2` FOREIGN KEY (` ITEMS_TO`) ССЫЛКИ `users` (` USERID`))
, когда я запускаю это:
$ID = '1';
$NULL = 'NULL';
$ID2 = '2';
$ID3 = '1';
my $update = $DBH->prepare("UPDATE items SET ITEMS_TO =?, ITEMS_FROM =? WHERE USERID =? AND ITEMS_ID = ?");
$update->execute($ID, $NULL, $ID2, $ID3);
$update->finish();
Работает без ITEMS_FROM иЯ хочу установить ITEMS_FROM на ноль.
Это работает:
my $update = $DBH->prepare("UPDATE items SET ITEMS_TO =? WHERE USERID =? AND ITEMS_ID = ?");
$update->execute($ID, $ID2, $ID3);
$update->finish();