gpt4 book ai didi

mysql - Yii DbMigration 将数据移动到其他表

转载 作者:行者123 更新时间:2023-11-29 14:37:07 24 4
gpt4 key购买 nike

我正在 Yii 中编写 CDbMigration 来创建一个带有现有表外键的新表。那很容易。我还想获取旧表中的每个条目,并将其 id、缩略图和 myfunction(title) 复制到新表,然后再将缩略图放入旧表中。

迁移前的old_table应该看起来像(被截断)

CREATE TABLE IF NOT EXISTS `old_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`thumbnail` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

之后我将拥有一个 new_table 和没有 thumbnail 的旧表

CREATE TABLE IF NOT EXISTS `new_table` (
`old_id` int(11) unsigned NOT NULL, -- foreign key to old_table
`transformed_title` varchar(255) NOT NULL,
`thumbnail` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

此外,myfunction 是一个转换字符串的函数。

现在我开始明白,在迁移中使用 CActiveRecord 是不好的做法,但我的 SQL 技能还不够敏锐,无法知道是否有 SQL 命令来执行我想要的迁移操作。或者我应该在脚本中单独复制数据(即不是我应该使用迁移的目的)?

最佳答案

一般来说,您可以使用INSERT...SELECT将数据复制到另一个表。 ;既然您要求 SQL 命令,这可能就是您正在寻找的:

INSERT INTO new_table (old_id, transformed_title, thumbnail)
SELECT id, MYFUNCTION(title), thumbnail FROM old_table

但是,myfunction 必须是 MySql 提供的函数,否则此查询(或纯 SQL 中的任何其他方法)将永远无法工作。

关于mysql - Yii DbMigration 将数据移动到其他表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798951/

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