sql 游标循环表名,批量增加主键

sql 游标循环表名,批量增加主键,第1张

IF exists(select count(*) from @table group by ID having count(*)>1)

这句不对

参照下面这段

declare @num int,@sqls nvarchar(4000)

set @sqls='select @a=count(*) from syscolumns '

exec sp_executesql @sqls,N'@a int output',@num output

select @num

注意类型要用nvarchar

declare @sql nvarchar(1000),@id int,@n varchar(10)

set @n='abc'

set @sql=N'if exists(select 1 from '+cast(@n as varchar)+' where fcourseNO is null or fcourseNO>=''0000'') set @out=1 else set @out=0'

exec sp_executesql @sql,N'@out int output',@id output

select @id

类似这个 自己组字符串

代码如下:

--创建测试表 

CREATE TABLE [Identity]( 

Id INT IDENTITY(1,2) NOT NULL PRIMARY KEY,--种子的起始值1,步长

Number VARCHAR(20) UNIQUE NOT NULL, 

Name VARCHAR(20) NOT NULL, 

Password VARCHAR(20) DEFAULT(123), 

Description VARCHAR(40) NULL 

--插入记录 

INSERT INTO [Identity](Number,Name,Description) VALUES('001','1st','Id=1,因为起始值1') 

INSERT INTO [Identity](Number,Name,Description) VALUES('002','2nd','Id=3,因为起始值1,步长2') 

INSERT INTO [Identity](Number,Name,Description) VALUES('003','3rd','Id=5,由于字符长度超长,报错插入失败,造成此Id产生后被放弃') 

INSERT INTO [Identity](Number,Name,Description) VALUES('004','4th','Id=7 not 5,因为第三条记录插入失败') 

--检索记录,查看结果 

SELECT * FROM [Identity]

第一步:创建sequence;

create sequence test_seq

increment by 1

start with 4

maxvalue 1800

minvalue 4

cache 4

解释:创建名为test_seq的sequence,从4开始,每次增加1,最大值是1800,最小值是4,cache 4 表示会缓存四个序列号,比如4、 5、 6、 7。

第二步:sql语句插入,每次插入一次就会根据增加规则自动递增。

sql:insert into tablename(id) values(test_seq.nextval)

解释:第一次插入的id为 4,再次执行为5,依次类推


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11865812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存