视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQLServer中自动获取编号字段
2020-11-09 13:48:34 责编:小采
文档

①像Access中的自动编号字段 右键你的表--设计表--找到你的id字段(类int型)--标识--是--标识种子(初始值)--标识递增量--OK ②用IDENTITY (SEED,INCREMENT)参数 seed -启始值 increment -增量 CREATE TABLE 表名( 你的ID IDENTITY (1, 1) NOT NULL ,你的其他

  ①像Access中的自动编号字段

  右键你的表-->设计表-->找到你的id字段(类int型)-->标识-->是-->标识种子(初始值)-->标识递增量-->OK

  ②用IDENTITY (SEED,INCREMENT)参数

  seed -启始值

  increment -增量

  CREATE TABLE 表名(

  你的ID IDENTITY (1, 1) NOT NULL ,你的其他字段... )

  CREATE TABLE 表名(

  你的字段ID AUTOINCREMENT(1000,10),其他字段... )

  ③修改起始值和步进值

  ALTER TABLE 表名 ALTER COLUMN 你的字段ID COUNTER(2000,50)

  ④让一个删空的表自动增加字段的开始值重新从1开始

  ALTER TABLE 表名 ALTER COLUMN 你的字段ID COUNTER(1,1)

  上述3 4只适用与Access,COUNTER为其一种数据类型,可以在Access中指定一不是自动编号的字段为自动编号字段,,也可以让一自动编号字段重新从指定值按指定步长自动编号。但是如果表中有数据,用户不能用该语句来将该列的数据类型改变为COUNTER 数据类型。对于SQL Server并不支持。

  对于SQL Server我们或许总希望用Alter Table 表名 Alter Column 你的字段 IDENTITY(1,1)

  来指定字段重新从1开始计数,但是这句话本身是错误的,好长时间我也疑惑为什么这句话不能执行。如果我们看看MS 对Alter Table语句的定义就清楚了,这句话根本是错误的。下面是MS对Alter Table语句的定义。

  ALTER TABLE table

  { [ ALTER COLUMN column_name

  { new_data_type [ ( precision [ , scale ] ) ]

  [ COLLATE < collation_name > ]

  [ NULL | NOT NULL ]

  | {ADD | DROP } ROWGUIDCOL }

  ]

  | ADD

  { [ < column_definition > ]

  | column_name AS computed_column_expression

  } [ ,...n ]

  | [ WITH CHECK | WITH NOCHECK ] ADD

  { < table_constraint > } [ ,...n ]

  | DROP

  { [ CONSTRAINT ] constraint_name

  | COLUMN column } [ ,...n ]

  | { CHECK | NOCHECK } CONSTRAINT

  { ALL | constraint_name [ ,...n ] }

  | { ENABLE | DISABLE } TRIGGER

  { ALL | trigger_name [ ,...n ] }

  }

  < column_definition > ::=

  { column_name data_type }

  [ [ DEFAULT constant_expression ] [ WITH VALUES ]

  | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]

  ]

  [ ROWGUIDCOL ]

  [ COLLATE < collation_name > ]

  [ < column_constraint > ] [ ...n ]

  < column_constraint > ::=

  [ CONSTRAINT constraint_name ]

  { [ NULL | NOT NULL ]

  | [ { PRIMARY KEY | UNIQUE }

  [ CLUSTERED | NONCLUSTERED ]

  [ WITH FILLFACTOR = fillfactor ]

  [ ON { filegroup | DEFAULT } ]

  ]

  | [ [ FOREIGN KEY ]

  REFERENCES ref_table [ ( ref_column ) ]

  [ ON DELETE { CASCADE | NO ACTION } ]

  [ ON UPDATE { CASCADE | NO ACTION } ]

  [ NOT FOR REPLICATION ]

  ]

  | CHECK [ NOT FOR REPLICATION ]

  ( logical_expression )

  }

  < table_constraint > ::=

  [ CONSTRAINT constraint_name ]

  { [ { PRIMARY KEY | UNIQUE }

  [ CLUSTERED | NONCLUSTERED ]

  { ( column [ ,...n ] ) }

  [ WITH FILLFACTOR = fillfactor ]

  [ ON { filegroup | DEFAULT } ]

  ]

  | FOREIGN KEY

  [ ( column [ ,...n ] ) ]

  REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]

  [ ON DELETE { CASCADE | NO ACTION } ]

  [ ON UPDATE { CASCADE | NO ACTION } ]

  [ NOT FOR REPLICATION ]

  | DEFAULT constant_expression

  [ FOR column ] [ WITH VALUES ]

  | CHECK [ NOT FOR REPLICATION ]

  ( search_conditions )

  }

  可以看到,IDENTITY只是在< column_definition >中,也就是说,我们可以这样使用

  Alter Table 表名 Add 字段名 Int IDENTITY(1,1)

  即,我们可以增加一个字段并指定它为自动编号字段。但是不能更改一个字段为自动编号字段(也或许我没找到方法)。即,如果我们想给表增加自动编号字段,只能使用添加字段的方法,而不能更改一个已有的字段为自动编号字段。

  至于如果需要更改自动编号字段计数起始值可以使用DBCC命令:

  DBCC CHECKIDENT (表名,RESEED,100)

  自动编号字段下一个从101开始计。

下载本文
显示全文
专题