편집 :이 로그 테이블 스키마에 대한 오해에 기반하기 때문에
내 초기 응답이 잘못되었습니다. Sheetal이 나중에이 스키마를 게시 한 것을 볼 때 (그리고 컬럼의 이름이 UserLoginID가 아닌 UserLoginID ...이라는 사실을 깨달았을 때)이 가설은 무효화됩니다. 로그 테이블 그러므로
,
CREATE TABLE USERLOG
(UserLogId int identity (1,1) CONSTRAINT pk_UserLogId primary key,
UserName nvarchar(50) not null,
LogInTime datetime CONSTRAINT dft_LogInTime default getdate()
)
--ADDING LOGOUT TIME ALTER TABLE USERLOG ADD LogOutTime datetime
더 많은 수수께끼 영업 질문 만들기 ...
어떻게 하나의 ID 열 PK 위반 상태를받을 수 있나요? (해당 테이블에 대한 INDENTITY_INSERT 설정과 PK 열에 대한 값이 포함 된 수동 편집/삽입이 아닌 경우 Sheetal이 이에 대한 의견을 밝힐 수 있습니다 ...)
Sheetal은 응용 프로그램의 논리를 조사해야합니다. , 사용자가 인증 된 후 로그인을 완료하는 코드 영역에서 UserLogId 열에 값이 지정된 쿼리 인스턴스를 찾습니다 (물론 WHERE 절 이외에 있음).
아직, 확실하지 않습니다. 왜 우리 모두 열심히 노력하고 있습니까?, 그리고 ... 확실히 자신의 수용 속도 ... ;-)
을 정보를 제공하여 영어의 발생 가능한 장애를 고려할 때, 심지어 자신의 질문을 프레임으로 Sheetal 자신의 최소한의 노력을 주어 - 다음은 잘못된 (가설에 기반 함) ----
UserLoginId이 로그 테이블의 기본 키로 선언 된 것 같습니다. 우리는 주어진 사용자에 대해 많은 로그 레코드를 가지기를 기대하기 때문에 이러한 테이블에는 이상한 선택입니다.
SQL 테이블에서 기본 키 제약 조건은 필수적으로 테이블에 기본 키 값이있는 레코드에 대한 INSERT 요청을 거부하도록 SQL에 지시합니다. (그리고 질문에 언급 된 것과 유사한 오류 조건을 반환하기 위해)
로그 테이블 스키마와 유스 케이스를 알지 못하도록 조언하기는 어렵지만, pk 제약 조건을 모두 제거하거나 다른 열을 사용할 수도 있습니다. "EventId"라는 자동 증가 형 열이 적합한 선택 일 수 있습니다. 당신은 로그 테이블에 같은 뭔가를 얻을 것 :
EventID (PK) DateTime UserLoginId EventType Details
1 01/02/2008 06:15:01 172 LogIn Stan
2 01/02/2008 06:15:21 321 LogIn Jeff
3 01/02/2008 06:15:24 172 FileDownload Report7.pdf
4 01/02/2008 06:15:54 172 FileDownload SalesTraining.pdf
5 01/02/2008 06:17:21 321 LogOut
등이 ...
출처
2009-09-21 16:41:41
mjv
당신은 테이블 정의를 제공 할 수 있습니까? 기본 열에서 사용하는 데이터 유형은 무엇입니까? IDENTITY를 사용 했습니까? –
@Sheetal : ID 열의 최대 값을 설정하면 무슨 뜻인지 이해할 수 없습니다. ID 열은 삽입 할 때마다 새 값이 필요합니다. SQL Server를 실행 한 지 오래되었지만 null을 삽입하거나 insert 문에서 값을 벗어나면 값이 자동 증가합니다. 아마도 최근 SQL Server 사용 경험이있는 사람이 확인할 수 있습니다. –
이 CREATE TABLE의 USERLOG ( UserLogId의 INT 신원 (1,1) 제약, 사용자 이름 NVARCHAR (50 차 키를 pk_UserLogId) null가 아닌, LogInTime 날짜 제약 dft_LogInTime 기본 GETDATE() ) 테이블 정의 입니다 - 로그 아웃 시간 추가 ALTER TABLE USERLOG ADD LogOutTime datetime – Sheetal