0

通常我在一个表(销售)示例中在 MySql 中插入数据。

string query = "INSERT INTO sales (price, user, date) " +
                             "VALUES(" +
                             "'" + txtQuant.Text + "'," +
                             "'" + txtLog.Text + "'," +
                              "NOW())";

但现在我改变了主意,决定单独​​创建另一个表,我将为列价格命名设置。这是我第一次这样做,所以我不知道该怎么做。

我试过这个。

string query = "INSERT INTO sales (user, date), settings (price) " +
                             "VALUES(" +
                             "'" + txtLog.Text + "'," +
                              "NOW())", "'" + txtQuant.Text + "'";

但它不起作用。

4

4 回答 4

1

只需使用 2 个查询即可

INSERT INTO sales (user, date) values('user', now()); 
INSERT INTO settings (price) values(100);
于 2013-04-09T09:26:04.387 回答
0

一次查询是不可能的,因为 INSERT 只能将数据插入到 mysql 中的一个表中。你可以

  • 将其写为两个查询并作为批处理执行
  • 创建一个执行两个插入命令的存储过程

如果您需要确保两个查询都将写入数据,则可以将这些插入包装在事务中

使用这些查询

$query1 ="INSERT INTO sales (user, date) values(.....)"; 
$query2 ="INSERT INTO settings (price) values(......)";
于 2013-04-09T09:26:34.643 回答
0

您必须将两个查询分开:

INSERT INTO sales (user, date) VALUES ( ... )

其次是

INSERT INTO settings (price) VALUES ( ... )

如果salesauto_increment主键,则可以在插入后LAST_INSERT_ID()在第二个查询中使用来引用sales.id

INSERT INTO settings (sale_id, price) VALUES (LAST_INSERT_ID(), ... )

请注意,像这样的相关查询最好放在事务中。

于 2013-04-09T09:27:24.317 回答
0

MySQL 不支持在单个查询中插入多个表(请参阅sql - 在一个查询中插入多个表)。

您可以在单个事务中放置多个查询,以确保它们要么都成功,要么都不成功。上面的问题有一个例子。

于 2013-04-09T09:27:31.067 回答