当表具有主键集时插入第一行

时间:2015-10-28 01:35:11

标签: sql sql-server tsql

我花了一整天时间创建,然后手动插入我今天创建的一些表格,如下所示:

  ID - Int (Primary Key set to Auto Increment)

  Value - Varchar

但后来我意识到我忘了插入" - "进入每个表的第一行。

是否可以为表中当前每个值的ID no添加1,然后插入" - "值进入第一行?

2 个答案:

答案 0 :(得分:1)

解决此问题的方法之一是将ID = 1的记录更新为“ - ”:

update yourTable set Value = '--' where id = 1

然后,您将需要将第一条记录重新插入表中:

INSERT INTO yourTable (Value) 
VALUES('the value that was originally inserted as 1')

但是,如果已插入记录的顺序很重要,那么您可以插入“ - ”值作为ID = 0.在这种情况下,您需要使用SET IDENTITY_INSERT禁用IDENTITY列:< / p>

SET IDENTITY_INSERT yourTable ON

INSERT INTO yourTable (ID, Value) 
VALUES(0, '--')

SET IDENTITY_INSERT yourTable OFF

这样就会保留插入记录的顺序,并插入ID为0的“ - ”

BTW,对于mySQL,您可以默认插入IDENTITY列

答案 1 :(得分:0)

由于您的ID column自动增量(IDENTITY),当您insert时,您不能insert ID column。要insert您的表格,您只需insert个其他列。 代码insert是这样的:

INSERT INTO Your_Table (ColA, ColB, ...)  -- `except identity colums`
VALUES (A, B, ...)

INSERT INTO Your_Table
VALUES (A, B, ...) -- except identity colums

INSERT INTO Your_Table
SELECT ColA, ColB, ... FROM Other_Table -- except identity colums

如果Your_Table为空:

INSERT INTO Your_Table (Value)
VALUES ('--')

INSERT INTO Your_Table
SELECT '--'

如果不是:

 UPDATE Your_Table
 SET Value = '--'
 WHERE ID = 1


------------------------ More Infor -------------------------------------------

如果要第一行有ID = 1.您可以设置ID列有IDENTITY(1,1)。像这样:

CREATE TABLE Your_Table
(
  ID INT IDENTITY(1, 1) PRIMARY KEY,
  Value VARCHAR(50) NULL
)

或者,创建Your_Table后,您可以设置右键单击 Your_Table,选择设计,然后选择ID column。查看下面的列属性,展开身份规范,双击(身份),然后设置值Identity Increment和{{1} }