当前位置:首页 » 编程语言 » sql自增长列

sql自增长列

发布时间: 2022-06-28 23:09:29

A. sql server中把一列改为自增长的语句怎么写

sql
server
中普通字段修改为自增字段时,如图:
把否修改为是:
按ctrl+S时报:
这时应:
去掉对勾
确定。
回到设计表中再次按ctrl+s保存字段自增。

B. SQL 程序如何获取自增表中的自增列的值

假设表结构如下:

CREATE TABLE TestTable

(

id int identity,

CreatedDate datetime

)

SQL2005获得新增行的自动增长列的语句如下:

insert into TestTable (CreatedDate) output inserted.id values (getdate())

output 是sql server2005的新特性,可以从数据修改语句中返回输出,可以看作是“返回结果的DML”

2005之后 Insert,Delete,Update语句 均支持Output语句。

在Output语句中可以引用inserted和deleted。使用方法同触发器类似。

该方法最大弊端就是需要指定主键。output Inserted.要返回的值。

带有output的insert语句.

@@identity只能返回当前会话最后生产的标识列. 如果一次性插入多条语句的话. 需要返回这些自动生产的标识列. 那么outpu就派上用场了.

declare @temp table(k int, v nvarchar(200))
insert into t1(datacol)
output inserted.keycol, inserted.datacol
into @temp
select lastname from TSQLFundamentals2008.hr.Employees where country='uk'

select * from @temp

带有output的delete语句和update语句也大同小异.

delete语句能操作deleted临时表. 而update的本质是delete和insert一次能操作inserted和updated两张表.

带有output的merge子句.

在merge子句的output输出中可以调用@action函数. 会返回一个代表相应操作的字符串(insert, update, delete)

SQL2000获得新增行的自动增长列的语句如下:

insert into TestTable (CreatedDate) values (getdate())

select @@IDENTITY

用select @@identity得到上一次插入记录时自动产生的ID

如果你使用存储过程的话,将非常简单,代码如下:SET @NewID=@@IDENTITY

@@identity使用注意事项:


我们要慎用@@IDENTITY,原因是 @@IDENTITY 它总是获取最后一条变更数据的自增字段的值,
而忽略了进行变更操作所在的范围约束。比如,我有表 A 和表 B 两个表,现在我在表 A 上定义了一个Insert触发器,当在表 A 中插入一条数据时,自动在表 B 也插入一条数据。此时,大家注意,有两个原子操作:在A中插入一条数据, 接着在B中随后插入一条数据。

现在我们想下,假设上面表 A 和表 B 都有IDENTITY自增域,那么我们在表 A 插入一条数据后,使用了 SELECT @@IDENTITY 输出时,输出的到底是 A 还是 B 的自增域的值呢? 答案很明显,是谁最后插入就输出谁,那么就是 B 了。于是,我本意是想得到 A 的自增域值,结果得到了 B 的自增域值,一只 BUG 随之诞生,搞不好还会影响到整个系统数据的混乱。

因此,对于这种情况,建议大家慎用 @@IDENTITY,而尽量采用SCOPE_IDENTITY()函数替换之。SCOPE_IDENTITY() 也是得到最后一条自增域的值,但是它是仅限在一个操作范围之内,而不@@IDENTITY 是取全局操作的最后一步操作所产生的自增域的值的。

SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。

在C#中使用ExecuteScalar()方法获得第一行第一列的值(即自增id):

object val = cmd.ExecuteScalar();

C. SQL2008添加自动增长列

因为你现在列num里面已经有数据,所以自动增长可能比较困难
可以增加一列,然后设定自动增长
alter
table
acc
add
column
id
int
identity

D. 如何用sql语言创建自动增长的列

CREATE
TABLE
[表名]
(
[AUTOID]
[int]
IDENTITY
(1,
1)
NOT
NULL
,
[列名]
[varchar]
(50)
COLLATE
Chinese_PRC_CI_AS
NULL
)
ON
[PRIMARY]
GO
能看明白吗?[AUTOID]
[int]
IDENTITY
(1,
1)
NOT
NULL
就是自动增长的字段,自动加1.

E. sql sever中如何将一列修改为自增长列

原来有个表news,id是主键,但不是非主键,现在需要将其修改为主键,方法如下:
对原有的id列是无法直接将其修改为主键的,必须间接地来实现,具体如下:
首先增加一个新列并定义为自增长列alter table news add id1 int Identity(1,1) not null
然后再资源管理器中右击news表,选择修改,将id列删除,并将id1修改为id即可,当然这个过程也可以通过sql语句来实现

F. sql中自增长类型怎么设置

可以用identity(1,1)是指从1开始,每次增加1.如果每次想增加2就是
建表时指定某列为自增长列
create
bable
[表名]
([列名1]
int
itentity(1,1),[列名2]........)

G. sql server建表时怎么设置ID字段自增

一、打开要设置的数据库表,点击要设置的字段,比如id,这时下方会出现id的列属性表。

H. sql server中如何实现自增字段

1、主键自增,以及建表的语句如下:

CREATE TABLEIF NOT EXISTS `t_email_notice` (

`id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,`send_time` INT (16) NOT NULL DEFAULT '0',PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

其中 `id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,这句话表示设置id字段字增,类型为int

2、varchar类型的主键,不会自增。但是你可以通过创建触发器的形式,来实现自增。代码如下:

CREATE TRIGGER `T` BEFORE INSERT ON `user`FOR EACH ROW begin

set new.id=concat('SH',lpad(((SELECT substring(id,3,4) from user where id=(select id from user order by id desc limit 1))+1),4,0));

end;

这段语句的意思是,当user表中新插入一条一条语句,会触发‘触发器T’将以’SH‘开头的id字段自增+1。

(8)sql自增长列扩展阅读

sql语句建表规则如下:

create table ‘表名’ (‘字段1’ type1 [not null] [primary key] identity(起始值,递增量),‘字段2’type2 [not null], ...)--primary key为主键 identity表示递增数量。

I. 在SqlServer中怎样设置自动增长字段

sqlserver有3种方式设置自增列,
1.
ssms中在图形化界面中建表时,设置自动增长的其实值及每次增量
2.
--语句建表时设置自增列,从1开始增长,每次增加1
create
table
test(col1
int
indentity(1,1,))
3.
--修改列为从1开始增长,每次增加10
alter
table
test
alter
col1
int
indentity(1,10)

热点内容
用手机怎么查询服务器的ip 发布:2024-04-28 09:00:43 浏览:203
macps缓存 发布:2024-04-28 08:03:26 浏览:536
腾讯云服务器销售好做吗 发布:2024-04-28 08:03:23 浏览:585
编程的码 发布:2024-04-28 08:02:41 浏览:545
c封装数据库 发布:2024-04-28 07:59:27 浏览:682
CRT存储 发布:2024-04-28 07:57:42 浏览:136
硬阈值算法 发布:2024-04-28 07:52:31 浏览:869
iphone存储空间自动 发布:2024-04-28 07:40:11 浏览:953
培训php还是java 发布:2024-04-28 07:10:49 浏览:919
dal数据访问 发布:2024-04-28 07:09:00 浏览:522