1

これが可能かどうかはわかりませんが、基本的にはこういうことをしたいです...

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

後で取得するためにDBに値を格納し、文字列の特定の場所に一意の値が必要なため、SQLが一意のIDを追跡し、エントリに格納するようにします。

助けてくれてありがとう!

ところで、SQLServer2008を使用

がこのようにそれをした場合、それは信頼できますか?

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

3 に答える 3

1

ID列の値は、挿入後まで決定されないため、挿入の一部として追加することはできません...ただし、計算列を使用して同様のことを行うことができます。

ALTER TABLE dbo.myTable
ADD MyValue AS 'hello ' + convert(varchar, ID) + 'world' PERSISTED
于 2012-10-19T21:54:22.433 に答える
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 に答える
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 に答える