我是sql的新手。我怀疑假设我有两张桌子。一个称为用户,另一个称为用户。
User
User_Id - name - email
Order
Order_id - product - User_id
我应该使用什么查询在订单表中插入新订单,其中User_id字段与用户表(现有用户)中的User_id相关
例如:
Order_id - product - User_id
1a - plate - 1
2a - car - 3
3a - bike - 1
答案 0 :(得分:1)
如果您拥有该用户的name
或email
,则可以尝试此操作。如果USER在user_id
和name
列上有复合主键,则它可以正常运行。最好将外键关系保留在ORDER
的user_id列上。
示例有NAME列,您也可以尝试使用电子邮件列。
INSERT INTO ORDER (ORDER_ID, PRODUCT, USER_ID)
VALUES (1a, 'plate', (SELECT USER_ID FROM USER WHERE NAME = 'Existing user'));
编辑:
我只参与过Oracle sql。发表评论后,找到了这个链接。
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
如果您在order_id列上定义了AUTO_INCREMENT,则无需传递值。
INSERT INTO ORDER (PRODUCT, USER_ID)
VALUES ('plate', (SELECT USER_ID FROM USER WHERE NAME = 'Existing user'));
答案 1 :(得分:0)
您使用标准的sql插入。
insert into Order (Order_id, product, User_id) values ("3a", "bike", 1)
如果您的表已设置属性,则User_id
字段将存在外键限制,因此如果您尝试插入订单但未引用有效人员,则mysql将引发错误。
答案 2 :(得分:0)
INSERT order (Order_id, product, User_id) VALUES (1a,plate,1)
外键与插件中使用的sql无关,它应该在创建表时设置,或者在创建表后通过ALTER TABLE查询设置。
答案 3 :(得分:0)
使用FOREIGN KEY创建表时,将定义表之间的关系。
CREATE TABLE Users(
UserId int primary key
);
CREATE TABLE Orders(
OrderId int primary key,
UserId int FOREIGN KEY REFERENCES Users(UserId)
);
然后你做一个简单的插入,如:
INSERT INTO ORDER(OrderId, UserId) VALUES(1, 5);
在这里查看外键约束的文档:http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html。