【问题标题】:MYSQL auto_increment insert statement from two foreign keysMYSQL auto_increment 从两个外键插入语句
【发布时间】:2016-05-30 04:00:47
【问题描述】:

。 我正在为我大学的最后一年项目创建一个数据库,但我目前陷入困境。 我有三个表:productcustomerproduct_order

product 有一个 auto_incremented 主键 product_IDcustomer 也有一个自动递增的主键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 变量只返回一次。

所以我的问题是:有更好的方法吗?

顺便说一句,这是用于客户登录网页,因此客户不必输入唯一的主键。

【问题讨论】:

    标签: mysql database tomcat


    【解决方案1】:

    是的,有更好的方法来做到这一点假设当客户注册时,他将获得 customer_id 自动递增,当客户登录到系统时将其存储在会话变量中并且每当他选择任何产品时,从会话中检索 customer_id和 product_id 来自 product 表并将其添加到 order_product 表中

    【讨论】:

    • 哦,好的,我明白了,所以我必须创建一个会话过程来存储所有客户 ID ......你能举个例子来说明如何做到这一点?
    • 你知道,我也在考虑做同样的事情......但我不太确定如何去做......嗯
    • 是的,这里假设你使用 PHP $_SESSION["CurrentUser"]=$username;我在上面的代码行中添加了用户名,你可以添加用户 ID,稍后你可以使用它,因为它是 $_SESSION["CurrentUser"] 如果你有答案标记它
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2015-07-17
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多