더 명확하게하기 위해, 내가 원하는이SQL 서버 2008 : 다른 열의 모든 고유 값에 대한 고유 번호를 가진 새 열을 추가 ALTER 테이블을 사용하는 방법
Batch domain
---------------
14 xyz.com
14 abc.com
15 abc.com
15 xyz.com
같은 테이블이 모든 도메인에 대해 고유 한 번호를 갖는 세 번째 열은 그들이 속한 배치가 중요하지 않습니다.
더 명확하게하기 위해, 내가 원하는이SQL 서버 2008 : 다른 열의 모든 고유 값에 대한 고유 번호를 가진 새 열을 추가 ALTER 테이블을 사용하는 방법
Batch domain
---------------
14 xyz.com
14 abc.com
15 abc.com
15 xyz.com
같은 테이블이 모든 도메인에 대해 고유 한 번호를 갖는 세 번째 열은 그들이 속한 배치가 중요하지 않습니다.
일반적으로 열을 추가하여이 작업을 수행하지 않습니다. 필요한 것은 DomainID라는 ID 필드가있는 도메인에 대한 테이블을 추가하는 것입니다. 그런 다음 배치 도메인 테이블은 도메인 이름이 아닌 ID를 저장하고 Domain 테이블에 조인하여 이름을 가져옵니다.
질문에 대답하려면 NEWID()
및 NEWSEQUENTIALID()
을 사용할 수 있습니다.
함수로 Newid는 트리거/저장 프로 시저/쿼리를 통해 호출 할 수 있지만 NEWSEQUENTIALID는 uniqueidentifier
유형의 열에 대해서만 값으로 설정할 수 있습니다.
둘 모두에 제한이 있으며, 정전이 발생하면 SEQUENTIAL ID를 추측하거나 클러스터를 야기 할 수 있지만, 보안이이 값과 관련이 없다면이를 관리 할 수 있습니다. 이 년 동안
ALTER TABLE [Schema_Name].[Table_Name]
ADD DomainID uniqueidentifier DEFAULT (NEWSEQUENTIALID())
는 Dave Pinal는 둘 사이 좋은 설명이있다.
열 데이터 형식이 추가되었습니다. –
나는 당신이 무엇을 의미하는지 완전히 이해한다. 나는 보통 그렇게 할 것이지만 현재의 데이터베이스 상태 때문에 나는 다른 테이블을 만드는 대신 컬럼을 추가하여 이것을 해결하고자한다. –
그런 다음 트리거를 통해 유지 관리하고 경쟁 조건을 처리해야합니다. – HLGEM