[key]
은 고유해야하며 문에서 MAX
호출은 한 번만 호출 된 것으로 간주되므로 다음 T-SQL 문은 작동하지 않습니다. 즉, 키 값을 한 번만 증가시키고 그 값을 반복해서 삽입하려고합니다. 누구든지 해결책이 있습니까?고유 키가있는 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'))
키는 시드 된 ID 일 수 있습니까? 그렇다면 자동으로 증가하므로 키 필드를 삽입 할 필요가 없습니다. –
왜 'IDENTITY'를 사용하지 않습니까? 이것은 당신의 문제를 해결할 것입니다. – Taryn
아마도 조건 : WHERE [email]! = ''AND [active] = '1'은 그것을 망칠 것입니다. 그것은 정말로 테이블의 최대 값을 반환하지 않습니다. 최대 값은 어디까지입니까? –