2013-05-02 3 views
0

필자는 컬럼의 최상위 값을 검사하는 트리거를 작성하고자합니다 (테이블은 4 개의 이중 컬럼으로 구성되며 그 중 하나는 기본 키 역할을합니다 (필드 내의 값은 항상 이전 값보다 커야합니다) 기입)). 이제 id 열의 최상위 값을 삽입해야하는 새 값과 비교하고 새 id 값이 이전 최상위 값보다 작 으면 (SQL 트리거를 사용하여) 트랜잭션을 롤백하는 방법이 있습니다. 미리 감사드립니다.삽입시 비교를위한 SQL 트리거

+3

어떤 DBMS를 사용하고 있습니까? 질문에 적절하게 태그를 답니다. –

+0

mySql을 사용하고 있습니다 – user1033698

+1

정수는 기본 키가 아닌 이중으로 만들고 자동 증가 값 또는 시퀀스와 같은 기능을 수행하려고 시도하는 것은 특이하고 깨지기 쉬운 디자인처럼 들립니다. 하지만 트리거를 실행하면 다음 ID가 MAX (yourDoublePrimaryKeyValue)보다 커야합니다. – Tim

답변

0

내가 찾은 가장 쉬운 방법은 결과를 얻는 지 확인하는 것입니다. 당신은 당신이 사용하고있는 MySQL의 또는 어떤 DBMS에서 트리거를 사용하여 알고있는 경우 (당신의 DBMS의 문서를 보면)

if (SELECT COUNT(*) FROM tbl_name WHERE id = id_you_want_check >= 1) { 
    rollback; 
} 

: 나는 이것을 의미한다.

추신 : 다음 번에 귀하의 SQL DBMS에 쉽게 적합한 솔루션을 찾을 수 있도록 게시했습니다. )

+0

제안 된 솔루션은 PK 값이 이미 사용 중인지 여부 만 테스트합니다. OP는 새로운 ID가 사용중인 최대 ID보다 커야합니다. – Tim

+0

그런 다음'SELECT MAX (pk)'를 사용하여'SELECT COUNT (*)'를 변경해야합니다. 이렇게 :'if (SELECT MAX (pk) FROM tbl_name == id_you_want_check) ... '미안하다. – DaGLiMiOuX