我有一个名为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;
答案 0 :(得分:1)
直接在表上使用DEFAULT
是不可能的。但是如果cover_pic
,您可以使用TRIGGER
将随机图片文件名设置到列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);