以下T-SQL語句不起作用,因爲[key]
必須是唯一的,並且SELECT
語句中的MAX
調用似乎只被調用一次。換句話說,它只是遞增一次鍵值,並嘗試反覆插入該值。有沒有人有辦法解決嗎?帶有唯一鍵的INSERT + SELECT
INSERT INTO [searchOC].[dbo].[searchTable]
([key],
dataVaultType,
dataVaultKey,
searchTerm)
SELECT (SELECT MAX([key]) + 1 FROM [searchOC].[dbo].[searchTable]) AS [key]
,'PERSON' as dataVaultType
,[student_id] as dataVaultKey
,[email] as searchTerm
FROM [JACOB].[myoc4Data].[dbo].[users]
WHERE [email] != '' AND [active] = '1'
AND [student_id] IN (SELECT [userID] FROM [JACOB].[myoc4Data].[dbo].[userRoles]
WHERE ([role] = 'STUDENT' OR [role] = 'FACUTLY' OR [role] = 'STAFF'))
鍵可以是一個種子身份?如果是這樣,那麼你不必插入鍵字段,因爲它會自動遞增。 –
爲什麼不使用'IDENTITY'?這會解決你的問題。 – Taryn
也許條件:WHERE [email]!=''AND [active] ='1'將其廢棄。它不真正迴歸表的最大值,僅最大,如果where條件.. –