更新MySQL数据库表架构

tdoakiiii

我想更新一个MySQL数据库模式(使用MySQL代码),但是不幸的是我不确定表的状态,因为它们是分布式的。

假设某些“客户”有一个名为“ user”的表,其表格式如下

name VARCHAR(64) NOT NULL
password VARCHAR(64) NOT NULL

我想添加一email列,但是可能他们已经有一个电子邮件列(取决于安装版本)。

如何运行确保有email的命令,如果已经存在则什么也不做?请记住,我将对许多更复杂的表执行此操作。

我知道我可以创建临时表并重新填充(和意愿,如果它是唯一的解决办法),但我想可能有某种CREATEUPDATEtable命令具有“哦,你已经有柱,跳过”逻辑。

用户名

您可以这样尝试:

DELIMITER $$
CREATE PROCEDURE Alter_MyTable()
BEGIN
    DECLARE _count INT;
    SET _count = (  SELECT COUNT(*) 
                    FROM INFORMATION_SCHEMA.COLUMNS
                    WHERE   TABLE_NAME = 'user' AND 
                            COLUMN_NAME = 'email');
    IF _count = 0 THEN
        ALTER TABLE user
            ADD COLUMN email varchar(512);
    END IF;
END $$
DELIMITER ;

或更确切地说,使其成为通用的存储过程,如下所示:

create procedure AddColumnIfDoesntExists(
    IN dbName tinytext,
    IN tableName tinytext,
    IN fieldName tinytext,
    IN fieldDef text)
begin
    IF NOT EXISTS (
        SELECT * FROM information_schema.COLUMNS
        WHERE column_name=fieldName
        and table_name=tableName
        and table_schema=dbName
        )
    THEN
        set @ddl=CONCAT('ALTER TABLE ',dbName,'.',tableName,
            ' ADD COLUMN ',fieldName,' ',fieldDef);
        prepare stmt from @ddl;
        execute stmt;
    END IF;
end;
//

delimiter ';'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新数据库架构

来自分类Dev

更新 mongodb atlas 数据库架构

来自分类Dev

MySQL导入数据库架构

来自分类Dev

更新数据库表

来自分类Dev

使用表中的值更新mysql数据库

来自分类Dev

使用ajax更新Mysql数据库表

来自分类Dev

插入表或使用MYSQL数据库更新(如果存在)

来自分类Dev

如何更新mysql数据库中的表

来自分类Dev

数据库架构

来自分类Dev

可以更改使用mysql从rails创建的数据库表架构吗?

来自分类Dev

MySQL正则表达式从数据库架构中获取正确的表名

来自分类Dev

MySQL数据库表

来自分类Dev

生产数据库架构更新的最佳实践是什么?

来自分类Dev

更新数据库架构学说时执行sql脚本

来自分类Dev

用于数据库部署的架构更改/更新脚本

来自分类Dev

Slick可以更新数据库架构吗?

来自分类Dev

如何使用NHibernate更新数据库架构

来自分类Dev

使用OOPS设计数据库表架构?

来自分类Dev

数据库架构:如何根据类型制作动态表?

来自分类Dev

调查关系数据库表架构

来自分类Dev

NserviceBus更改表的默认数据库架构以创建

来自分类Dev

数据库架构:如何根据类型制作动态表?

来自分类Dev

无法在 mongo 数据库中创建表的架构

来自分类Dev

库存数据库设计架构的库存表

来自分类Dev

如何使用mySQL使用当前数据库表中的信息更新其他数据库表?

来自分类Dev

无法从MySQL数据库更新数据

来自分类Dev

Symfony2将数据库架构信息存储在数据库表中

来自分类Dev

如何在mysql数据库中复制架构

来自分类Dev

使用MySQL Workbench修改数据库架构