0

我想要一个速记(如果可能的话)将多条记录插入到具有主键和 IsIdentity 属性的表中。例如,假设我有一个名为“People”的表,其中包含以下列:
- ID(主键和身份 [即自动增量])
- 名称(非空)
- 电子邮件(非空)

排除自增 ID 列的插入语句是完全有效的,例如:

插入人的价值观('George'、'george@email.com')

但是,如果我想在同一个语句中插入多个值,理想情况下可以这样做,我不必显式指定列名

插入人的价值观(
   (自动,'乔治','george@email.com'),
   (自动,'玛丽','mary@email.com')
)

我能找到的最佳解决方案是这样的:

插入人(
   选择'乔治','george@email.com',
   联合所有
   选择'玛丽','mary@email.com'
)

我想您可能会争辩说,这是一种毫无意义的追求,但我希望查询本身可以与表设计一起扩展。例如,如果更改了列名,或者添加了更多列,我就不必在代码中的任何地方进行更改。

干杯:)

4

2 回答 2

2

您可以像这样插入多行:

INSERT INTO `People` (`name`,`email`) VALUES ('George', 'George@test.com'),('Mary', 'LittleLamb@test.com');

编辑:

mysql> create table `test`(
    -> `id` int(10) unsigned not null AUTO_INCREMENT,
    -> `name` varchar(255) not null default 'N/A/',
    -> `email` varchar(255) not null default 'N/A/',
    -> PRIMARY KEY(`id`) 
    -> )ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO `test` VALUES (null, 'Name 1', 'Email 1'),(null, 'Name 2','Email 2');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from `test`;
+----+--------+---------+
| id | name   | email   |
+----+--------+---------+
|  1 | Name 1 | Email 1 |
|  2 | Name 2 | Email 2 |
+----+--------+---------+
2 rows in set (0.00 sec)

只要您的主键设置为自动增量,您就可以使该字段无效,它会自动将值设置为自动增量值。

于 2011-07-09T00:33:47.653 回答
1

这取决于您使用的数据库。一些数据库允许多个值集:

insert into People values
(auto, 'George', 'george@email.com'),
(auto, 'Mary', 'mary@email.com')
于 2011-07-09T00:35:45.263 回答