1

我不确定这是否可能,但基本上我想做这样的事情......

insert into [DNSList].[dbo].[myTable] ([myValue]) values ('hello ' + convert(varchar,@@identity) + 'world')

将值存储在数据库中以供稍后检索,并且需要在字符串的某个位置具有唯一值,所以想通了让 sql 跟踪唯一 id 并将其存储在条目中。

谢谢您的帮助!

顺便说一句,使用 sql server 2008

编辑 如果我这样做怎么办,它可靠吗?

declare @id as varchar
set @id = CONVERT(varchar,@@identity + 1)
insert into [DNSList].[dbo].[myTable] ([myValue]) values ('hello ' + @id + ' world')
4

3 回答 3

1

在插入之后才会确定标识列的值,因此您不能将其添加为插入的一部分......但是,您可以使用计算列执行类似的操作:

ALTER TABLE dbo.myTable
ADD MyValue AS 'hello ' + convert(varchar, ID) + 'world' PERSISTED
于 2012-10-19T21:54:22.433 回答
0

这似乎是最直接的插入方式。

declare @id as varchar
set @id = CONVERT(varchar,@@identity + 1)
insert into [DNSList].[dbo].[myTable] ([myValue]) values ('hello ' + @id + ' world')
于 2012-10-23T16:08:32.453 回答
0

我更喜欢 Computed Column Idea,但如果 Hello world 部分是可变的,您总是可以使用输出:

-- What I imagine the table would look like
CREATE TABLE dbo.MyTable (
myID INT IDENTITY(1,1) NOT NULL, 
myValue NVARCHAR(2000)
)

DECLARE @TmpMyIDasString NVARCHAR(2000)
DECLARE @TmpMyIDasINT INT
DECLARE @TmpTable TABLE(tmpID) -- You can only output in a table :/

INSERT INTO dbo.MyTable (myValue)
     VALUES ('AnyText') 
     OUTPUT INSERTED.myId INTO @TmpTable

     -- Put it back in variables you can actually use
     SELECT @TmpMyIDasString = LTRIM(tmpID), 
            @TmpMyIDasINT = tmpID 
       FROM @TmpTable

     -- Update!  
     UPDATE dbo.MyTable 
        SET myValue = myValue+@TmpMyIDasString 
      WHERE myID = @TmpMyIDasINT

它确实让你在插入后进行额外的更新......

于 2012-10-20T04:31:05.780 回答