2014-01-06 3 views
0

저는 인터넷을 둘러 보았습니다. 제약 조건을 삭제하고 추가하는 것과 같이 솔루션이나 설명이 복잡하다는 것을 알았습니다. 첫째, Transaction 테이블에 어떤 사용자가 어떤 레코드를 추가하거나 수정했는지 기록해야하기 때문에 UserName을 기본 키로 가지는 Users 테이블을 가리키는 외래 키가 있습니다. 그러나 이제 ASP.Net에서 제공된 테이블 인 aspnet_Users 테이블을 사용하여 프로그램의 사양이 변경되었습니다. 이제 UserID 기본 키의 외래 키가 aspnet_Users에 있음을 알 수 있습니다. 어떻게 제대로 할 수 있습니까? 일부 스키마 정보를 제공 할 수 있다면다른 테이블을 가리 키도록 외래 키를 변경하십시오.

+0

'UserName'은 전자 메일 주소와 같이 고유 한 것으로, 'John Smith'는 아닙니다. ... –

답변

1

JamesP,

그것은 훨씬 더 도움이 될 것입니다. 그러나 귀하의 사용자 테이블 사용자 이름이 varchar 데이터 유형이고 UserIDuniqueidentifier 데이터 유형이라고 의심됩니다. 이 때문에 필드가 Transaction 테이블에 uniqueidentifier 데이터 유형으로 지정되어 있는지 확인해야합니다. 이 작업이 완료되고 영향을받은 모든 행이 업데이트되면 관계 기능을 사용하여 관리 스튜디오에서 외래 키 관계 속성을 간단히 수정할 수 있습니다.

당신은 SQL에서 순수하게이 일을 원하는 경우는 (psudo 코드)로 관계를 기존의 dropthe해야합니다

ALTER TABLE [Transaction] DROP CONSTRAINT [<constraintName>] 

재 작성 제약.

ALTER TABLE [Transaction] ADD CONSTRAINT [<constraintName>] FOREIGN KEY([UserID]) REFERENCES [aspnet_Users](UserID) 

건배.

+0

맞습니다. 내 'Username'은'nvarchar'이고 사용자 ID는'UserId'입니다. 'uniqueidentifier '. 그러나 나는 상사와 짧은 대화를 나눴다. 그는'UserId'가 아니라'UserName'을 이용하도록 주장했다. 그래서 내가 한 제약 조건을 제거하고 내 'AddNewRecord' 저장된 proc 안에는 프로 시저가 주어진 Username과 일치하는 aspnet_Users에 Username을 찾는 코드를 삽입했습니다. 그러나 당신의 대답이 내가 이전에 목표로 삼아 온 계획 이었기 때문에, 나는 그것에 대한 점수를 줄 것이다. :) – JamesP

관련 문제