تحديث عمود من الجدول أن يكون تسلسل
-
06-07-2019 - |
سؤال
وأريد تحديث عمود جدول باستخدام نتائج إجراء مخزن
create procedure seq
as
DECLARE @NextValue INT;
INSERT SequencesTable DEFAULT VALUES;
DELETE SequencesTable WITH(READPAST);
SELECT SCOPE_IDENTITY();
go
وأنا لا يمكن استخدام UDF لأنه nodeterministic. وشيء من هذا القبيل لا تعمل
UPDATE [dbo].[t1] SET [c1] = seq
ولدي شعور أنا يقترب هذا بطريقة خاطئة.
وأريد فقط أن تفعل تحديث جدول يشبه هذا
1 1
2 2
1 4
1 4
5 5
1 2
لتبدو مثل هذا
1 1
2 2
3 4
4 4
5 5
6 2
المحلول
وحاول شيئا من هذا القبيل:
update a set c1 = c1_new
from (
select
c1, c2
, c1_new = row_number() over (order by nullif(c1,c1))
from dbo.t1
) a
وحول اللعب مع الاستعلام الداخلي حتى تحصل على ما تريد، ثم تطبيق التحديث.
ووNULLIF (C1، C1) يحاول الحفاظ على النظام الأصلي على القرص. وتعود دائما فارغة.
لا تنتمي إلى StackOverflow