programing

삽입할 때 두 값 사이를 뒤섞어 열에 두 값을 DEFAULT로 지정하는 방법

linuxpc 2023. 7. 25. 20:41
반응형

삽입할 때 두 값 사이를 뒤섞어 열에 두 값을 DEFAULT로 지정하는 방법

이 세 개의 열이 있는 user_profile이라는 테이블이 있습니다.cover_pic 열에 대한 값을 지정하지 않은 경우 지정된 두 값에서 기본 랜덤 값을 삽입해야 합니다.

예를 들어 어떤 때는 기본값으로 ABC.png을 삽입하고 어떤 때는 XYZ.png을 삽입합니다.

CREATE TABLE user_profile(
    profileId int(11) NOT NULL AUTO_INCREMENT,
    profile_pic VARCHAR(200) DEFAULT "profile.png",
    cover_pic VARCHAR(200) DEFAULT RAND("ABC.png","xyz.png"),
    CONSTRAINT pk_profileId PRIMARY KEY(profileId)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

이것은 다음과 같은 경우에는 불가능합니다.DEFAULT직접 테이블 위에그러나 를 사용하여 임의의 사진 파일 이름을 열에 설정할 수 있습니다.cover_pic한다면NULL:

CREATE TRIGGER insert_cover_pic BEFORE INSERT ON user_profile
  FOR EACH ROW 
    SET NEW.cover_pic = IF(NEW.cover_pic IS NULL, ELT(FLOOR(RAND()*2)+1, 'pic1', 'pic2'), NEW.cover_pic);

사용TRIGGER를 사용할 수 있습니다.INSERT INTO열을 지정하지 않고cover_pic(또는 사용)NULL종대로cover_pic):

INSERT INTO user_profile (profile_pic) VALUES ('test.png');
INSERT INTO user_profile (profile_pic, cover_pic) VALUES ('test.png', NULL);

dbfiddle.uk 에서 데모합니다.

언급URL : https://stackoverflow.com/questions/54723255/how-to-specify-two-value-as-default-on-a-column-by-shuffling-between-two-values

반응형