那么如何在mysql中创建一个关系,如果产品存在于order_items中,限制用户将其从产品表中删除?
感谢
答案 0 :(得分:2)
您可以使用InnoDB Engine的外键执行此操作。
ALTER TABLE order_items ADD FOREIGN KEY (`p_id`) REFERENCES `products` (`p_id`);
产品上的ID必须是密钥(它可能已经是主键)。
如果您不使用InnoDB,则不能使用MySQL强制执行此操作,但必须使用您的应用程序强制执行(例如,首先检查订单中是否存在记录)。
所以对于你的表,你运行:
ALTER TABLE `order_item` ADD FOREIGN KEY (`bookid`) REFERENCES `book` (`id`);
答案 1 :(得分:0)
您正在寻找外键。具体来看“限制”选项。
http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
答案 2 :(得分:0)
我的表结构:
CREATE TABLE `book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) NOT NULL,
`title` varchar(100) NOT NULL,
`description` text NOT NULL,
`author` varchar(100) NOT NULL,
`publisher` varchar(100) NOT NULL,
`edition` int(11) NOT NULL,
`isbn` varchar(13) NOT NULL,
`category` varchar(11) NOT NULL,
`datesubmitted` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
CREATE TABLE `order_item` (
`orderid` int(11) NOT NULL,
`bookid` int(11) NOT NULL,
KEY `Foreign` (`bookid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;