我不确定这是否可行,但基本上我想做这样的事情......
insert into [DNSList].[dbo].[myTable] ([myValue]) values ('hello ' + convert(varchar,@@identity) + 'world')
在DB中存储一个值以便稍后检索,并且在字符串的某个位置需要一个唯一值,因此只需让sql跟踪唯一ID并将其存储在条目中。
感谢您的帮助!
btw,使用sql server 2008
修改 如果我这样做,它可靠吗?
declare @id as varchar
set @id = CONVERT(varchar,@@identity + 1)
insert into [DNSList].[dbo].[myTable] ([myValue]) values ('hello ' + @id + ' world')
答案 0 :(得分:1)
在插入之后才会确定标识列的值,因此您无法将其作为插入的一部分添加...但是,您可以使用computed column执行类似操作:< / p>
ALTER TABLE dbo.myTable
ADD MyValue AS 'hello ' + convert(varchar, ID) + 'world' PERSISTED
答案 1 :(得分: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
它确实会让你在插入后进行额外的更新....
答案 2 :(得分:0)
这似乎是插入的最直接方式。
declare @id as varchar
set @id = CONVERT(varchar,@@identity + 1)
insert into [DNSList].[dbo].[myTable] ([myValue]) values ('hello ' + @id + ' world')