Mysql.Запрос на вставку данных в таблицу, связанную с другим - PullRequest
0 голосов
/ 20 января 2012

Я новичок в 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

Ответы [ 4 ]

1 голос
/ 20 января 2012

Если у вас есть name или email пользователя, вы можете попробовать это.Если ПОЛЬЗОВАТЕЛЬ имеет составной первичный ключ для столбцов user_id и name, он будет работать без проблем.Лучше сохранить связь с внешним ключом для столбца user_id ORDER.

Пример содержит столбец NAME, вы также можете попробовать использовать столбец электронной почты.* Я работал только на Oracle sql.После вашего комментария нашел эту ссылку.

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

Если вы определили AUTO_INCREMENT для столбца order_id, вам не нужно передавать значение.

0 голосов
/ 20 января 2012

Отношения между таблицами определяются при создании таблицы с использованием клавиши FOREIGN.

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.

0 голосов
/ 20 января 2012
INSERT order (Order_id, product, User_id) VALUES (1a,plate,1) 

Внешний ключ не имеет никакого отношения к sql, используемому во вставке, которую он должен был установить при создании таблицы или с помощью запроса ALTER TABLE после ее создания.

0 голосов
/ 20 января 2012

вы используете стандартную вставку sql.

insert into Order (Order_id, product, User_id) values ("3a", "bike", 1)

Если в ваших таблицах настроено свойство, в поле User_id будет введено ограничение по внешнему ключу, поэтому, если вы попытаетесь вставить заказ, но не ссылаетесь на действующего человека, mysql выдаст ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...