[SQL] 특정 조건에서 방지 INSERT에 MySQL의 트리거
SQL특정 조건에서 방지 INSERT에 MySQL의 트리거
나는 생일 (열 중 하나)은 미래에있는 경우 삽입을 방지하는 트리거를 만들고 싶어. 내가 이거 가지고있어:
CREATE TRIGGER foo
BEFORE INSERT ON table
FOR EACH ROW
BEGIN
IF NEW.birthdate > CURRENT_DATE()
THEN
//How do I prevent the insert right here???
END IF;
END;
어떻게 if 문 내부에 삽입을 취소 할 수 있습니다?
해결법
-
==============================
1.그것은 그런 식으로 할 수 있다면이를 바탕으로 나는 확실하지 않다.
그것은 그런 식으로 할 수 있다면이를 바탕으로 나는 확실하지 않다.
-
==============================
2.당신은 트리거는 비어 있습니다보고 삽입을 방지하기 위해 신호를 제기 빈 문자열을 삽입.
당신은 트리거는 비어 있습니다보고 삽입을 방지하기 위해 신호를 제기 빈 문자열을 삽입.
삽입이 방지되도록 당신은 빈 문자열이 공백이고 null로 값을 변경 트리거 톱을 삽입.
-
==============================
3.늦은 시간에이다하지만 지금은 그렇게 할 수 있을지 모르겠어요 :
늦은 시간에이다하지만 지금은 그렇게 할 수 있을지 모르겠어요 :
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "your error text";
추신 이전과 트리거 이후 구분 기호를 수정하는 것을 잊지 마세요 ...
-
==============================
4.
DELIMITER $$ CREATE TRIGGER foo BEFORE INSERT ON table FOR EACH ROW BEGIN IF NEW.birthdate > CURRENT_DATE() THEN SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Warning: birthdate can not be greater than current date!'; END IF; END$$ DELIMITER ;
-
==============================
5.저도 같은 문제가 있었다. 나는 테이블을 만들었지 만의 MySQL에서 문자열의 최소 길이를 할당 할 수있는 방법이 없었다. 다음과 같이 나는 테이블을 생성 :
저도 같은 문제가 있었다. 나는 테이블을 만들었지 만의 MySQL에서 문자열의 최소 길이를 할당 할 수있는 방법이 없었다. 다음과 같이 나는 테이블을 생성 :
CREATE TABLE Users ( UserName varchar(15) NOT NULL PRIMARY KEY, Password varchar(15) NOT NULL, Active Bool DEFAULT TRUE, CHECK (CHAR_LENGTH(UserName)>3) )
그러나 CHECK 기능이 삽입 작동하지 않습니다.
그래서 다음과 같이 내 테이블을 변경 :
CREATE TABLE Users ( UserName varchar(15) NOT NULL PRIMARY KEY, Password varchar(15) NOT NULL, Active Bool DEFAULT TRUE )
그 후, 트리거를 만들 :
delimiter $$ CREATE TRIGGER myTrigger BEFORE INSERT ON Users FOR EACH ROW BEGIN IF CHAR_LENGTH(NEW.UserName) < 4 THEN DELETE FROM Users WHERE Users.UserName=NEW.UserName; END if; END$$ delimiter ;
-
==============================
6.CHECK 제한에 대한 완벽한 후보와 같은 질문의 소리에서 설명하는 문제가 - 테이블 정의에 다음 행을 추가합니다.
CHECK 제한에 대한 완벽한 후보와 같은 질문의 소리에서 설명하는 문제가 - 테이블 정의에 다음 행을 추가합니다.
제약 born_in_the_past 검사 (생년월일 <= 지금 ())
from https://stackoverflow.com/questions/2981930/mysql-trigger-to-prevent-insert-under-certain-conditions by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 자바 준비된 문장 삽입에 대한 테이블 이름 변수를 사용하여 [중복] (0) | 2020.03.20 |
---|---|
[SQL] 열을 동적으로 변환 행에 MySQL의 쿼리 (0) | 2020.03.20 |
[SQL] 결과를 검색 할 때 어떻게 모호한 열 이름을 해결하기 위해? (0) | 2020.03.20 |
[SQL] 당신은 어떻게 Oracle 데이터베이스에 임시 테이블을 만들려면 어떻게해야합니까? (0) | 2020.03.20 |
[SQL] 대소 문자 구분 문자열은 LINQ - 투 - SQL에 비교 (0) | 2020.03.20 |