我正在運行一些SQL,用於標識需要標記爲刪除的記錄並將值插入這些記錄。必須更改此值以使記錄無用,並且由於數據庫限制,每條記錄必須更改爲唯一值。TSQL插入一個升序值
UPDATE Users
SET Username = 'Deleted' + (ISNULL(
Cast(SELECT RIGHT(MAX(Username),1)
FROM Users WHERE Username LIKE 'Deleted%') AS INT)
,0) + 1
FROM Users a LEFT OUTER JOIN #ADUSERS b ON
a.Username = 'AVSOMPOL\' + b.sAMAccountName
WHERE (b.sAMAccountName is NULL
AND a.Username LIKE 'AVSOMPOL%') OR b.userAccountControl = 514
這是最重要的一點:
SET Username = 'Deleted' + (ISNULL(
Cast(SELECT RIGHT(MAX(Username),1)
FROM Users WHERE Username LIKE 'Deleted%') AS INT)
,0) + 1
我一直試圖做的是有刪除的記錄有其名字段設置爲「Deletedxxx」。 ISNULL是必需的,因爲可能沒有匹配SELECT RIGHT(MAX(Username),1) FROM Users WHERE Username LIKE 'Deleted%'
聲明的記錄,這將返回NULL
。
我試圖解析這個(Msg 156, Level 15, State 1, Line 2 Incorrect syntax near the keyword 'SELECT'. Msg 102, Level 15, State 1, Line 2 Incorrect syntax near ')'.
我敢肯定,必須有一個更好的方式去了解這一點,任何想法時出現語法錯誤?
你可以添加一個位域到該表(例如IsDeleted)並用它來標記它嗎?將使更快的查詢來獲取所有未刪除的用戶。 – Paddy 2010-04-20 11:41:35
否 - 我無法修改應用程序的行爲方式,因此無法禁用用戶。用戶名字段實際上包含用戶的網絡登錄ID,應用程序使用此字段登錄使用Windows憑據的用戶,刪除這是我可以考慮禁用帳戶的唯一方法。 – 2010-04-20 12:41:35