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)'。 –
作爲說明:您可以聯繫可以在未來版本中進行更正的作者或發佈者。 –