我在SQL Server中有一个包含多列的表。名为usertxt1的列为NULL。我想根据表中的ID列在此列中插入一个NEWID()。
ID Product Price Date usertxt1
1 A 10 9/8/2017
2 A 15 9/7/2017
3 B 20 8/8/2017
4 B 25 8/9/2017
5 C 13 6/3/2017
到目前为止我能够完成的任务:我在此表中运行了更新语句以输入GUIDS。这是我正在使用的测试数据库。我的问题是:如何在完全相同的表中的prod数据库中插入这些usertxt10值?还要继续,如何在表中创建新行时确保创建NEWID()?从朋友告诉我的某种临时表存储过程应该可以解决问题,但我无法使其工作。
答案 0 :(得分:0)
你可以把你的sp写成:
DECLARE @id INT
INSERT INTO [YouTable]
( usertxt1 )
VALUES ( NULL
)
SET @id = SCOPE_IDENTITY()
UPDATE [YouTable]
SET usertxt1 = NEWID()
WHERE Id = @id
答案 1 :(得分:0)
根据您的要求,这可能是您继续进行的方式之一。
IF Object_ID('tempdb..#temp_t') iS NOT NULL
drop table #temp_t
declare @table TABLE
(
ID int,name varchar(10),
usertxt varchar(20)
)
insert into @table(ID,name) values(1,'AA')
insert into @table(ID,name) values(2,'BB')
以下逻辑可以包含在函数中
declare @rand INT,@count INT=1,@MAXCount INT=1
select @MAXCount = count(ID) from @table
while(@count<=@MAXCount)
BEGIN
select ID as iD,ROW_NUMBER() over(order by ID) as rownum INTO #temp_t
from @table
update t set usertxt =
convert(varchar(3),t.ID)+
CONVERT(VARCHAR(10),ROUND(CONVERT(INT,RAND()*1000),4))
from @table t join #temp_t tt on
tt.ID=t.ID and rownum=@count
set @count+=1
END
select * from @table