我有一个名为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
。但如果TRIGGER
,您可以使用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);