zoukankan      html  css  js  c++  java
  • Mysql官方文档中争对安全添加列的处理方法。Mysql Add a Column to a table if not exists

    Add a Column to a table if not exists


    MySQL allows you to create a table if it does not exist, but does not provide a native way of a adding a column (i.e. a field) to an existing table with a test of whether the column already exists - so as to avoid an error if the column already exists. The ability to add a column if it does not exist can be useful for upgrade scripts and the like.

    The following script creates a stored procedure that allows a column to be added to a table but only if it does not already exist:

    drop procedure if exists AddColumnUnlessExists;
    create procedure AddColumnUnlessExists(
        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;

      

    This stored procedure provides the functionality for "add column if not exists". To use the script call it with the name of the database, name of the table, name of the field and the field definition to use if the field is to be created. For example:

    call AddColumnUnlessExists(Database(), 'accounts', 'dob', 'varchar(32) null');

    which will add the field "dob" to the table "accounts" in the current database, unless it already exists, or

    call AddColumnUnlessExists('GIS', 'boundaries', 'fillColour', 'int unsigned not null default 1');

    which will add the field "fillColour" to the table "boundaries" in the database "GIS" if it does not already exist.

    If you want to drop the stored procedure after use then use:

    drop procedure AddColumnUnlessExists;
  • 相关阅读:
    VisualStudioAddIn2017.vsix的下载安装和使用
    数独计算程序的比较
    Ajax
    VSTO作品:OutlookMailViewer的下载和使用
    VB6实现Excel多工作簿数据合并
    组件中 data 为什么是一个函数?
    谈谈你对 keep-alive 的了解?
    父组件可以监听到子组件的生命周期吗?
    Vue 的父组件和子组件生命周期钩子函数执行顺序?
    谈谈你对 Vue 生命周期的理解?
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/5284748.html
Copyright © 2011-2022 走看看