。
我在我的大学为我的最后一年项目建立了一个数据库,而且我目前卡住了。
我有三个表:product
,customer
和product_order
。
product
有一个auto_incremented主键product_ID
并且customer
还有一个auto_incremented主键customer_ID
。
product_order
表是我的问题所在(我知道mysql不支持@insert和@scope_identity,同时@last_insert_id也不适合我)
我在这里有两个外键来自产品和客户表(这是auto_increment id并使用我在网上看到的变量
SELECT @last := LAST_INSERT_ID();
仅返回product_ID和customer_ID的最后一个ID。
我有这些插入语句:
insert into Product values(1000 ,'Logitech Webcam C270 HD mic USB', 260, 5, 'Accessory');
insert into customer VALUES(2000, 'Rachel ' , 'Mc Roy' , 'Rach@gmail.com', 'female','1985/06/05','wlovely8', '41, Cantubury Lane, San Franscique', 2938493);
insert into product_order values(@last_id_in_Customer, @last_id_in_Product, 'Logitech Webcam C270 HD mic USB', 260, 1);
我正在插入ID来设置我希望id落入的范围;因此我把2000和1000的原因;在其他插入中,我使用null将数据自动插入表中
select * from product_order;
2001 2001 Logitech Webcam C270 HD mic USB 260 1
我的查询输出只会插入一次,因为@last变量只返回一次。
所以我的问题是:有更好的方法吗?
这是针对客户登录网页的,因此客户不必输入唯一的主键。
答案 0 :(得分:0)
是的,有更好的方法这样做假设当客户注册时,他将获得customer_id自动递增,当客户在会话变量中登录系统存储时以及每当他选择任何产品时,从会话中检索customer_id和产品表中的product_id并将其添加到order_product表