gpt4 book ai didi

mysql - 在 SQL 中使用列名作为行的值

转载 作者:行者123 更新时间:2023-11-29 00:53:54 25 4
gpt4 key购买 nike

我有以下 sql 脚本:

CREATE TABLE  `akalogixDB`.`users` (
`user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`priv_id` INT NOT NULL DEFAULT '3',
`username` VARCHAR( 40 ) NOT NULL ,
`password` VARCHAR( 40 ) NOT NULL ,
`email` VARCHAR( 40 ) NOT NULL ,
`first_name` VARCHAR( 40 ) NULL ,
`last_name` VARCHAR( 40 ) NULL ,
`avatar` VARCHAR( 100 ) NULL DEFAULT 'images/avatars/no_avatar.jpg',
`mini_avatar` VARCHAR( 100 ) NULL DEFAULT 'images/avatars/no_avatar_mini.jpg',
`about` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL ,
`user_folder` VARCHAR(100) NOT NULL DEFAULT ====> #here is the problem
UNIQUE (
`username` ,
`email`)
) ENGINE = MYISAM ;

我想为 user_folder 提供以下默认值:'users/folders/'+user_id + 当前时间戳我该怎么做,我知道我可以用 PHP 来做,但是有没有办法用 sql 指令来做。

最佳答案

您可以使用触发器。像这样的东西:

CREATE TRIGGER `before_users_insert`
BEFORE INSERT ON `users` FOR EACH ROW
BEGIN
IF NEW.user_folder IS NULL THEN
SET NEW.user_folder = CONCAT('users/folders/',NEW.user_id, UNIX_TIMESTAMP());
END IF;
END

您需要弄清楚什么值会触发您的默认值,因为 NULL(正如我编码的那样)可能不起作用,因为您在该列上有一个 NOT NULL。不过,这是一种合理的方法,我希望这能为您提供总体思路。

关于mysql - 在 SQL 中使用列名作为行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com