개발자
CREATE TABLE uesr_into( id SMALLINT AUTO_INCREMENT PRIMARY KEY, name MEDIUMTEXT NOT NULL, sex ENUM('M' ,'F') NOT NULL, job MEDIUMTEXT age MEDIUMINT NOT NULL if(age>20 AND age<100, NOT NULL, '입소가 불가능 합니다.') ); if문에서 값을 못게 할 수 없나요?
답변 1
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 09월 18일
MySQL에서는 기본적으로 if문을 사용해 CREATE TABLE 문에서 각 열의 값을 제한하는 것은 불가능합니다. 그러나, table 생성 후 TRIGGER를 이용하여 INSERT 혹은 UPDATE 시에 조건을 검사할 수 있습니다. 예를 들어 다음과 같이 트리거를 만들어 나이(age)가 20보다 작거나 100보다 큰 경우 insert를 허용하지 않도록 할 수 있습니다. ```mysql CREATE TRIGGER check_age BEFORE INSERT ON user_info FOR EACH ROW IF NEW.age < 20 OR NEW.age > 100 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '입소가 불가능 합니다.'; END IF; ``` 위의 트리거는 새로운 row 추가(insert)에 대해 동작하며, age값이 지정된 범위 밖인 경우 에러 메시지와 함께 insert 동작을 중단시킵니다. 단, 이렇게 제한된 동작을 수행하려면 MySQL 버전이 5.5 이상이어야 합니다. TRIGGER는 데이터베이스에서 데이터의 CRUD(Create, Read, Update, Delete) 동작 전/후에 원하는 작업을 자동으로 수행할 수 있게 해주는 기능입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!