Я читаю книгу об электронной коммерции. В этой книге я нашел ниже код SQL:SQL Foreign Key
CREATE TABLE `orders` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`users_id` INT UNSIGNED NOT NULL,
`transaction_id` VARCHAR(45) NOT NULL,
`payment_status` VARCHAR(45) NOT NULL,
`payment_amount` INT UNSIGNED NOT NULL,
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `date_created` (`date_created` ASC),
INDEX `transaction_id` (`transaction_id` ASC),
CONSTRAINT `fk_orders_users1`
FOREIGN KEY (`id`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE = InnoDB DEFAULT CHARSET=utf8;
В книге говорится, что CONSTRAINT бы предотвратить вставку «users_id», который не совпадает с «идентификатор» в «пользователи» таблицы. Читая код, я считаю, что книга ошибочна, потому что я считаю, что этот код предотвратит вставку «id» (в таблицу «заказы»), которая не соответствует полю «id» (в таблице пользователи). Я не ошибаюсь?
Извините за плохой английский. Я не американец, и стараюсь изо всех сил ...
Да, вы правы. – lad2025
Код должен читать 'foreign key (user_id)', а не 'foreign key (id)'. –
В качестве примечания: вы можете связаться с автором или издателем, который может внести исправление в будущих версиях. –