短Sql插入语句?

时间:2010-03-07 19:48:33

标签: sql mysql sql-server

在MySql中我可以有一个带有自动增量列的表并以这种方式插入:

INSERT INTO tbl VALUES(null, "bla", "bla");

有没有办法用Microsoft SQL Server Express执行此操作?

而不是:

INSERT INTO tbl(`v1`, `v2`) VALUES ("bla", "bla");  

由于

3 个答案:

答案 0 :(得分:5)

在Sql Server中,你不需要为identity列指定一个值(我猜这是mysql中的null正在做的事情)。

因此,插入表格的简短语法是:

Insert Into tbl Values('bla', 'bla')

无论是否将列声明为表的主键,它都适用,并且也适用于表中列的任何位置。也就是说,即使列位于中间,如下所示:

Create Table tbl (
    [Col1] [varchar](50) NULL,
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Col2] [varchar](50) NULL
)

Sql Server仍然会很乐意解释insert语句并处理身份插入。

正如其他海报所提到的,在Sql Server中,您实际上需要发出Set Identity_Insert tbl On命令才能为标识列指定值。

答案 1 :(得分:0)

我认为您在询问是否可以在insert语句中包含对identity列的引用,并在Values或Select子句中传递null或其他一些魔术值。你不能。除非使用SET IDENTITY_INSERT [table] ON并传递实际值,否则不能传递标识列的值。

答案 2 :(得分:0)

INSERT INTO tbl VALUES(null, 'bla', 'bla');

作品;使用单引号。

来自http://msdn.microsoft.com/en-us/library/ms174335.aspx

  

“如果值列表中的值为   与列不同的顺序   在表中或没有值   对于表格中的每一列,   column_list必须用于显式   指定存储每个的列   传入价值。“