1
我在读一本关于电子商务的书。在这本书中,我发现了如下因素的SQL代码:SQL外键
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;
书上说,该约束将防止出现“users_id”不匹配表中的“用户”一个“身份证”的插入。通过阅读代码,我相信这本书是错误的,因为我相信这段代码会阻止插入一个“id”(在表中的“orders”),它与字段“id”不匹配)。我是对的?
对不起,英语不好。我不是美国人,并尽我所能...
是的,你是对的。 – lad2025
代码应该读取'外键(user_id)'而不是'外键(id)'。 –
作为说明:您可以联系可以在未来版本中进行更正的作者或发布者。 –