首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >create table identity中的变量

create table identity中的变量
EN

Stack Overflow用户
提问于 2011-11-12 12:46:03
回答 2查看 905关注 0票数 2

我在SP中有一个临时表。

代码语言:javascript
运行
复制
CREATE TABLE #bclist (
            bcastid INT
            ,userid INT
            ,etype INT
            ,articles0 BIGINT
            ,seq INT identity(1, 1)
            )

我还有一个变量@nextseq,我想要的是像下面这样的东西

代码语言:javascript
运行
复制
CREATE TABLE #bclist (
            bcastid INT
            ,userid INT
            ,etype INT
            ,articles0 BIGINT
            ,seq INT identity(@nextseq, 1)
            )

但是SQl服务器不允许这个.Any解决方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-12 12:48:14

您可以使用

代码语言:javascript
运行
复制
DBCC CHECKIDENT (#bclist, RESEED, @nextseq)

但是,如果您的SP不是从dbowner运行的,则它将不起作用。您可以做的另一件事是对表重新设定种子。

代码语言:javascript
运行
复制
if @nextseq > 1 
        begin
                 TRUNCATE table #bclist
            SET IDENTITY_INSERT #bclist ON  
            INSERT INTO #bclist (seq) 
            VALUES (@nextseq-1 )  
            SET IDENTITY_INSERT #bclist OFF  
            DELETE FROM #bclist 
         End

不要忘记if条件,否则在你的序列中,你将从2而不是1得到值。

票数 2
EN

Stack Overflow用户

发布于 2011-11-12 13:06:40

全局临时表怎么样?

代码语言:javascript
运行
复制
DECLARE @foo  varchar(5);
SET @foo = '4';

DECLARE @query nvarchar(max);

-- a global temp table will exist for the lifetime of
-- the connection
SET @query = replace(N'
CREATE TABLE ##bclist (
            bcastid INT
            ,userid INT
            ,etype INT
            ,articles0 BIGINT
            ,seq INT identity(@seed, 1)
            )', '@seed', @foo)

EXECUTE(@query)

INSERT INTO
    ##bclist
SELECT 0,1,2,3
select * from ##bclist

drop table ##bclist

结果

代码语言:javascript
运行
复制
bcastid   userid   etype   articles0   seq
0         1        2       3           4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8102612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档