필자는 컬럼의 최상위 값을 검사하는 트리거를 작성하고자합니다 (테이블은 4 개의 이중 컬럼으로 구성되며 그 중 하나는 기본 키 역할을합니다 (필드 내의 값은 항상 이전 값보다 커야합니다) 기입)). 이제 id 열의 최상위 값을 삽입해야하는 새 값과 비교하고 새 id 값이 이전 최상위 값보다 작 으면 (SQL 트리거를 사용하여) 트랜잭션을 롤백하는 방법이 있습니다. 미리 감사드립니다.삽입시 비교를위한 SQL 트리거
0
A
답변
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
관련 문제
- 1. 삽입시 SQL 트리거 업데이트
- 2. 삽입시 SQL Server 2000 트리거
- 3. 삽입시 트리거
- 4. AS400의 삽입시 업데이트 트리거
- 5. 특정 열에 대한 삽입시 트리거 SQL 서버
- 6. 오라클 트리거 삽입시
- 7. mysql 트리거 삽입시
- 8. 열 삽입시 트리거 오류
- 9. MySQL - HOUR ('time') 삽입시 트리거
- 10. 모든 업데이트 또는 삽입시 트리거
- 11. 다른 레코드 비교를위한 Sql
- 12. 삽입시 SQL Server 트리거 및 삽입 된 데이터를 참조하는 방법
- 13. 동일한 테이블의 삽입시 두 개의 트리거
- 14. 삽입시 SQL 주입 방지
- 15. 삽입시 SQL 오류가 발생했습니다.
- 16. SQL 삽입시 레코드를 복제하려고합니다
- 17. MySql 트리거, 삽입시 다른 테이블 업데이트
- 18. 데이터베이스 삽입시 SQL 오류가 발생했습니다.
- 19. 오라클 SQL 트리거 날짜
- 20. 여러 열 비교를위한 SQL 쿼리 최적화
- 21. 삽입 후 트리거, 레코드 삽입시 오류 테이블 변이
- 22. SQL : 트리거
- 23. SQL 트리거
- 24. SQL 서버 일반 트리거 생성
- 25. sql 트리거 값에서 x를 설정해야합니다.
- 26. SQL 트리거 오류 - 잘못된 트리거
- 27. 삽입시 EXC_BAD_ACCESS
- 28. 비교를위한 이상한 MySQL 동작
- 29. mysql, 만료 된 비밀번호의 수를 제한하기 위해 삽입시 트리거
- 30. 트리거 내의 Sqlite CTE 삽입시 구문 오류가 발생합니다.
어떤 DBMS를 사용하고 있습니까? 질문에 적절하게 태그를 답니다. –
mySql을 사용하고 있습니다 – user1033698
정수는 기본 키가 아닌 이중으로 만들고 자동 증가 값 또는 시퀀스와 같은 기능을 수행하려고 시도하는 것은 특이하고 깨지기 쉬운 디자인처럼 들립니다. 하지만 트리거를 실행하면 다음 ID가 MAX (yourDoublePrimaryKeyValue)보다 커야합니다. – Tim