এটি উপস্থিত না থাকলে মাইএসকিএল টেবিলটিতে কলাম যুক্ত করুন


109

আমার গবেষণা এবং পরীক্ষাগুলি এখনও কোনও উত্তর দেয়নি, তাই আমি কিছু সাহায্যের আশা করছি।

আমি এমন কোনও অ্যাপ্লিকেশনটির ইনস্টল ফাইলটি সংশোধন করছি যা পূর্ববর্তী সংস্করণগুলিতে কলামটি নেই যা আমি এখন যুক্ত করতে চাই। আমি কলামটি ম্যানুয়ালি যোগ করতে চাই না, তবে ইনস্টলেশন ফাইলে এবং কেবলমাত্র যদি নতুন কলামটি ইতিমধ্যে টেবিলটিতে উপস্থিত না থাকে।

টেবিলটি নীচে তৈরি করা হয়েছে:

CREATE TABLE IF NOT EXISTS `#__comm_subscribers` (
      `subscriber_id` int(11) NOT NULL auto_increment,
      `user_id` int(11) NOT NULL default '0',
      `subscriber_name` varchar(64) NOT NULL default '',
      `subscriber_surname` varchar(64) NOT NULL default '',
      `subscriber_email` varchar(64) NOT NULL default '',
      `confirmed` tinyint(1) NOT NULL default '0',
      `subscribe_date` datetime NOT NULL default '0000-00-00 00:00:00',
      PRIMARY KEY  (`subscriber_id`),
      UNIQUE KEY `subscriber_email` (`subscriber_email`)
    ) ENGINE=MyISAM CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' COMMENT='Subscribers for Comm are stored here.';

আমি যদি সারণী বিবৃতি তৈরির নীচে নিম্নলিখিতটি যুক্ত করি, তবে কলামটি ইতিমধ্যে উপস্থিত থাকলে (এবং সম্ভবত জনবহুল) কী ঘটবে তা আমি নিশ্চিত নই:

ALTER TABLE `#__comm_subscribers` ADD `subscriber_surname`;
ALTER TABLE `#__comm_subscribers` MODIFY `subscriber_surname` varchar(64) NOT NULL default '';

সুতরাং, আমি নিম্নলিখিতটি চেষ্টা করেছিলাম যা আমি কোথাও খুঁজে পেয়েছি। এটি কাজ করে বলে মনে হচ্ছে না তবে আমি এটি পুরোপুরি নিশ্চিত নই যে আমি এটি সঠিকভাবে ব্যবহার করেছি।

/*delimiter '//'
CREATE PROCEDURE addcol() BEGIN
IF NOT EXISTS(
SELECT * FROM information_schema.COLUMNS
WHERE COLUMN_NAME='subscriber_surname' AND TABLE_NAME='#__comm_subscribers'
)
THEN
    ALTER TABLE `#__comm_subscribers`
    ADD COLUMN `subscriber_surname` varchar(64) NOT NULL default '';
END IF;
END;
//
delimiter ';'
CALL addcol();
DROP PROCEDURE addcol;*/

কারও কি এটি করার ভাল উপায় আছে?


2
তথ্য_স্কেমা.কলমএনএস পরিবর্তন করা, অর্থাত সঞ্চিত পদ্ধতিটি আইএমএইচও যাওয়ার উপায়। এর কোন অংশটি "কাজ করে বলে মনে হচ্ছে না"?
রডিয়ান

উত্তর:


49

নোট যে INFORMATION_SCHEMA5.0 এর আগে মাইএসকিউএল সমর্থিত নয়। 5.0 এর পূর্বে সঞ্চিত পদ্ধতিগুলি সমর্থিত নয়, সুতরাং আপনার যদি মাইএসকিউএল ৪.১ সমর্থন করার প্রয়োজন হয় তবে এই সমাধানটি ভাল নয়।

ফ্রেমওয়ার্কগুলি ব্যবহার করে একটি সমাধান যা ডাটাবেস মাইগ্রেশন ব্যবহার করে তা হ'ল আপনার ডাটাবেসে স্কিমার জন্য একটি সংশোধন নম্বর রেকর্ড করা। একটি একক কলাম এবং একক সারি সহ কেবল একটি টেবিল, যা সংশোধন কার্যকর হয় তা নির্দেশ করে ger আপনি যখন স্কিমা আপডেট করবেন তখন সংখ্যাটি বৃদ্ধি করুন।

আরেকটি সমাধান শুধু হবে চেষ্টাALTER TABLE ADD COLUMN কমান্ড। কলামটি ইতিমধ্যে উপস্থিত থাকলে এটি একটি ত্রুটি ছুঁড়ে ফেলা উচিত।

ERROR 1060 (42S21): Duplicate column name 'newcolumnname'

ত্রুটিটি ধরুন এবং এটি আপনার আপগ্রেড স্ক্রিপ্টে উপেক্ষা করুন।


1
ঠিক আছে এটি সত্যিই অশোধিত তবে কারও কাছে এটির কথা বলা উচিত। আপনি যদি কেবল কমান্ড লাইন থেকে একটি এসকিউএল স্ক্রিপ্ট চালাচ্ছেন তবে আপনি মাইএসকিএল --forceস্যুইচটি দিতে পারবেন , যার অর্থ কোনও ত্রুটি থাকলেও চলতে থাকুন। তারপরে, কেবল এটির জন্য যান। আপনি কেবল নিশ্চিত হতে চান যে কোনও পূর্ববর্তী কিছু ব্যর্থ হলে সফল হতে চান না এমন কোনও বিবৃতি নেই।
ডেভিড

85

এখানে একটি কার্যনির্বাহী সমাধান রয়েছে (সোলারিসে মাইএসকিউএল 5.0 দিয়েই চেষ্টা করা হয়েছে):

DELIMITER $$

DROP PROCEDURE IF EXISTS upgrade_database_1_0_to_2_0 $$
CREATE PROCEDURE upgrade_database_1_0_to_2_0()
BEGIN

-- rename a table safely
IF NOT EXISTS( (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE()
        AND TABLE_NAME='my_old_table_name') ) THEN
    RENAME TABLE 
        my_old_table_name TO my_new_table_name,
END IF;

-- add a column safely
IF NOT EXISTS( (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE()
        AND COLUMN_NAME='my_additional_column' AND TABLE_NAME='my_table_name') ) THEN
    ALTER TABLE my_table_name ADD my_additional_column varchar(2048) NOT NULL DEFAULT '';
END IF;

END $$

CALL upgrade_database_1_0_to_2_0() $$

DELIMITER ;

প্রথম নজরে এটি সম্ভবত এটির চেয়ে জটিল দেখায়, তবে আমাদের এখানে নিম্নলিখিত সমস্যাগুলি মোকাবেলা করতে হবে:

  • IF বিবৃতি কেবল সঞ্চিত পদ্ধতিতে কাজ করে, সরাসরি চালানো হয় না, যেমন মাইএসকিএল ক্লায়েন্টে
  • আরও মার্জিত এবং সংক্ষিপ্ত SHOW COLUMNSস্টোর পদ্ধতিতে কাজ করে না তাই INFORMATION_SCHEMA ব্যবহার করতে হবে
  • মীমাংসিত বিবৃতিগুলির জন্য সিনট্যাক্সটি মাইএসকিউএল-তে বিস্ময়কর, সুতরাং সঞ্চিত পদ্ধতি তৈরি করতে সক্ষম হতে আপনাকে ডিলিমিটারটিকে নতুন করে সংজ্ঞায়িত করতে হবে। ডিলিমিটারটি ফিরে যেতে ভুলবেন না!
  • INFORMATION_SCHEMA সমস্ত ডাটাবেসের জন্য বিশ্বব্যাপী, ফিল্টার করতে ভুলবেন না TABLE_SCHEMA=DATABASE()DATABASE()বর্তমানে নির্বাচিত ডাটাবেসের নাম ফিরিয়ে দেয়।

1
আমি আশা করি যে এই পদ্ধতির কারণ হিসাবে জড়িত বিষয়গুলি ব্যাখ্যা করার জন্য আমি বোনাস পয়েন্ট প্রদান করতে পারি। ধন্যবাদ.
ব্রায়ান পেটি

48

আপনি যদি মারিয়াডিবিতে থাকেন তবে সঞ্চিত পদ্ধতি ব্যবহার করার দরকার নেই। উদাহরণস্বরূপ কেবল ব্যবহার করুন:

ALTER TABLE table_name ADD COLUMN IF NOT EXISTS column_name tinyint(1) DEFAULT 0;

এখানে দেখো


8
উজ্জ্বল! মারিয়াডিবি ব্যবহারের আরও একটি কারণ।
অ্যান্ড্রু এনসলে

+1 আমি মারিয়ার সাথে সারাক্ষণ কাজ করে যাচ্ছি এবং এই সমস্ত পদক্ষেপের উপরে চেষ্টা করেছিলাম যতক্ষণ না আমি এইটি না পেয়েছি, এটি আমার জীবন রক্ষা করেছে।
থিলিসিয়াস

আকর্ষণীয় .. আমি মারিয়াডিবি সম্পর্কে কখনই কঠোর নই এবং এই নিবন্ধটি সে সম্পর্কে কিছু ধারণা দিতে পারি seravo.fi/2015/…
ওয়ালভ

এই সমাধানটি দুর্দান্ত, তবে মারিয়াডিবি 10.0.2 লাগবে না। যে কেউ এই মার্জিত সমাধানটি ব্যবহার করতে চায় তবে কেবল তার পুরানো সংস্করণে আটকে আছে তার জন্য কেবল মাথাব্যাথা।
jblopez

টেবিলের টেবিলের নাম পরিবর্তন করুন কলম্বের পরিবর্তে যদি কলামের_র_রং_নাম কলাম_নাম টিনিনেন্ট (1) ত্রুটি 0; -ও ভাল কাজ!
ড্যামনসন

34

সঞ্চিত পদ্ধতিতে নিরাপদে কীভাবে একটি কলাম যুক্ত করতে হবে তার বেশিরভাগ উত্তরের ঠিকানায়, আমার কোনও সঞ্চিত প্রোক ব্যবহার না করে নিরাপদে একটি টেবিলের সাথে একটি কলাম যুক্ত করার দরকার ছিল এবং আবিষ্কার করে যে মাইএসকিউএল কোনও এসপিরIF Exists() বাইরে ব্যবহারের অনুমতি দেয় না । আমি আমার সমাধান পোস্ট করব যাতে এটি একই পরিস্থিতিতে কাউকে সহায়তা করতে পারে।

SELECT count(*)
INTO @exist
FROM information_schema.columns 
WHERE table_schema = database()
and COLUMN_NAME = 'original_data'
AND table_name = 'mytable';

set @query = IF(@exist <= 0, 'alter table intent add column mycolumn4 varchar(2048) NULL after mycolumn3', 
'select \'Column Exists\' status');

prepare stmt from @query;

EXECUTE stmt;

1
দ্রষ্টব্য, মাইএসকিউএল ওয়ার্কবেঞ্চ জিইআইয়ের মাধ্যমে কাজ করার সময় আমাকে নির্বাচনী বিবৃতিতে একটি "লিমিটেড 1" যুক্ত করতে হয়েছিল।
আল দাস

23

এটি করার আরেকটি উপায় হ'ল একটি দিয়ে ত্রুটি উপেক্ষা করা declare continue handler:

delimiter ;;
create procedure foo ()
begin
    declare continue handler for 1060 begin end;
    alter table atable add subscriber_surname varchar(64);
end;;
call foo();;

আমি মনে করি এটি একটি existssubquery চেয়ে ভাল এইভাবে। বিশেষত যদি আপনার কাছে প্রচুর কলাম যুক্ত করতে থাকে এবং আপনি স্ক্রিপ্টটি বেশ কয়েকবার চালাতে চান।

চালিয়ে যাওয়া হ্যান্ডলারদের সম্পর্কে আরও তথ্য http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html এ পাওয়া যাবে


এটা ভালবাসা! এটা কখনই ভাবিনি। আমি নিশ্চিতভাবে জিনিসগুলি করার এই পদ্ধতিতে স্যুইচ করতে যাচ্ছি।
জনি কাউফম্যান

ত্রুটি 1060 (42S21): সদৃশ কলামের নাম 'নতুন কলাম নাম'
জেক

আসলেই নিফটি!
ATOzTOA

6

আমি মাইএসকিউএল 5.5.19 ব্যবহার করছি।

আমি এমন স্ক্রিপ্টগুলি পছন্দ করি যা আপনি চালাতে এবং ত্রুটি ছাড়াই পুনরায় চালিত করতে পারেন, বিশেষত যেখানে সতর্কতাগুলি দীর্ঘায়িত হয় বলে মনে হয়, পরে যখন আমি স্ক্রিপ্টগুলি চালাচ্ছি যেখানে কোনও ত্রুটি / সতর্কতা নেই showing ক্ষেত্রগুলি যোগ করার দিক থেকে আমি এটিকে কিছুটা কম টাইপ করার জন্য একটি পদ্ধতি লিখেছিলাম:

-- add fields to template table to support ignoring extra data 
-- at the top/bottom of every page
CALL addFieldIfNotExists ('template', 'firstPageHeaderEndY', 'INT NOT NULL DEFAULT 0');
CALL addFieldIfNotExists ('template', 'pageHeaderEndY', 'INT NOT NULL DEFAULT 0');
CALL addFieldIfNotExists ('template', 'pageFooterBeginY', 'INT NOT NULL DEFAULT 792');

অ্যাডফিল্ডআইফনোটএক্সিস্ট প্রক্রিয়া তৈরি করার কোডটি নীচে রয়েছে :

DELIMITER $$

DROP PROCEDURE IF EXISTS addFieldIfNotExists 
$$

DROP FUNCTION IF EXISTS isFieldExisting 
$$

CREATE FUNCTION isFieldExisting (table_name_IN VARCHAR(100), field_name_IN VARCHAR(100)) 
RETURNS INT
RETURN (
    SELECT COUNT(COLUMN_NAME) 
    FROM INFORMATION_SCHEMA.columns 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = table_name_IN 
    AND COLUMN_NAME = field_name_IN
)
$$

CREATE PROCEDURE addFieldIfNotExists (
    IN table_name_IN VARCHAR(100)
    , IN field_name_IN VARCHAR(100)
    , IN field_definition_IN VARCHAR(100)
)
BEGIN

    -- http://javajon.blogspot.com/2012/10/mysql-alter-table-add-column-if-not.html

    SET @isFieldThere = isFieldExisting(table_name_IN, field_name_IN);
    IF (@isFieldThere = 0) THEN

        SET @ddl = CONCAT('ALTER TABLE ', table_name_IN);
        SET @ddl = CONCAT(@ddl, ' ', 'ADD COLUMN') ;
        SET @ddl = CONCAT(@ddl, ' ', field_name_IN);
        SET @ddl = CONCAT(@ddl, ' ', field_definition_IN);

        PREPARE stmt FROM @ddl;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

    END IF;

END;
$$

আমি কোনও কলামটি নিরাপদে সংশোধন করার জন্য কোনও প্রক্রিয়া লিখিনি, তবে আমি মনে করি যে এটি করার জন্য উপরের পদ্ধতিটি সহজেই সংশোধন করা যেতে পারে।


5

আমি ওপি'র স্প্রোক নিয়েছি এবং এটিকে পুনরায় ব্যবহারযোগ্য এবং স্কিমা স্বাধীন করে তুলেছি। অবশ্যই এটি এখনও মাইএসকিউএল 5 প্রয়োজন।

DROP PROCEDURE IF EXISTS AddCol;

DELIMITER //

CREATE PROCEDURE AddCol(
    IN param_schema VARCHAR(100),
    IN param_table_name VARCHAR(100),
    IN param_column VARCHAR(100),
    IN param_column_details VARCHAR(100)
) 
BEGIN
    IF NOT EXISTS(
    SELECT NULL FROM information_schema.COLUMNS
    WHERE COLUMN_NAME=param_column AND TABLE_NAME=param_table_name AND table_schema = param_schema
    )
    THEN
        set @paramTable = param_table_name ;
        set @ParamColumn = param_column ;
        set @ParamSchema = param_schema;
        set @ParamColumnDetails = param_column_details;
        /* Create the full statement to execute */
        set @StatementToExecute = concat('ALTER TABLE `',@ParamSchema,'`.`',@paramTable,'` ADD COLUMN `',@ParamColumn,'` ',@ParamColumnDetails);
        /* Prepare and execute the statement that was built */
        prepare DynamicStatement from @StatementToExecute ;
        execute DynamicStatement ;
        /* Cleanup the prepared statement */
        deallocate prepare DynamicStatement ;

    END IF;
END //

DELIMITER ;

এটি আমার পক্ষে ভাল কাজ করে। আমার একমাত্র পরিবর্তনটি হ'ল কনটাক্টের কলটিতে পিছনের উদ্ধৃতি (`) মুছে ফেলা। এছাড়াও, @ParamTable, @Paraकम কলাম, @ParaSchema, এবং @Paraकम কলাম বিবরণগুলি ভেরিয়েবলগুলি সরিয়ে কোডটি সরল করতে পারেন এবং কেবলমাত্র প্যারামিটারগুলি ব্যবহার করতে পারেন।
hrabinowitz

1

সঞ্চিত প্রক্রিয়া স্ক্রিপ্টটি চেষ্টা করে দেখেছি। সমস্যাটি হ'ল 'ডিলিমিটারগুলির চারপাশের চিহ্নগুলি। মাইএসকিউএল ডক্স যে বিভেদক অক্ষর একক উদ্ধৃতি প্রয়োজন হবে না প্রদর্শন করুন।

তাহলে তুমি চাও:

delimiter //

পরিবর্তে:

delimiter '//'

আমার জন্য কাজ কর :)


@ অ্যান্ডি আপনি বিন্দুটি পুরোপুরি মিস করেছেন। এই মন্তব্যটি কোথায় ওপি তার ভুল করেছে তা নির্দেশ করে। একক উদ্ধৃতি না থাকলে ওপি ইতিমধ্যে সেখানে ছিল।
রিচার্ডকিকি

1

আপনি যদি এটি কোনও স্ক্রিপ্টে চালাচ্ছেন, আপনি পুনরায় পুনরায় ব্যবহারযোগ্য করার জন্য আপনি নীচের লাইনটি পরে যুক্ত করতে চাইবেন, অন্যথায় আপনি ইতিমধ্যে ত্রুটিযুক্ত একটি পদ্ধতি পেয়ে যাবেন।

drop procedure foo;

1

পিএইচপি> পিডিওতে কলাম যুক্ত করার সর্বোত্তম উপায়:

$Add = $dbh->prepare("ALTER TABLE `YourCurrentTable` ADD `YourNewColumnName` INT NOT NULL");
$Add->execute();

দ্রষ্টব্য: টেবিলের কলামটি পুনরাবৃত্তিযোগ্য নয়, এর অর্থ আমাদের কোনও কলামের অস্তিত্ব পরীক্ষা করার দরকার নেই, তবে সমস্যাটি সমাধানের জন্য আমরা উপরের কোডটি পরীক্ষা করে দেখছি:

উদাহরণস্বরূপ, যদি এটি 0 না করে সতর্কতা কাজ করে, যার অর্থ কলামটি বিদ্যমান! :)


1

কলামটি PDO এ রয়েছে কি না তা পরীক্ষা করুন (100%)

{
    if(isset($_POST['Add']))
    {
        $ColumnExist = $dbh->prepare("SELECT * FROM ColumnChecker where column_name='$insert_column_name' LIMIT 1");
        $ColumnExist ->execute();
        $ColumnName = $ColumnExist->fetch(2);
        $Display_Column_Name = $ColumnName['column_name'];

        if($Display_Column_Name == $insert_column_name)
        {
            echo "$Display_Column_Name already exist";
        } //*****************************
        else 
        {
            $InsertColumn = $dbh->prepare("insert into ColumnChecker ( column_name ) values ('$insert_column_name')");
            $InsertColumn->execute();

            if($InsertColumn)
            {
                $Add = $dbh->prepare("ALTER TABLE `$Table` ADD `$insert_column_name` $insert_column_type($insert_column_Length) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ");
                $Add->execute();

                if($Add)
                {
                    echo 'Table has been updated';  
                }
                else 
                {
                    echo 'Sorry! Try again...'; 
                }
            }   
        }
    }
}#Add Column into Table :)

1

জ্যাক https://stackoverflow.com/a/6476091/6751901 থেকে প্রক্রিয়া নতুন কলাম যুক্ত করার জন্য খুব সহজ এবং ভাল সমাধান, তবে একটি অতিরিক্ত লাইন সহ:

DROP PROCEDURE IF EXISTS foo;;

আপনি পরে সেখানে নতুন কলাম যুক্ত করতে পারেন এবং এটি পরের বারেও কাজ করবে:

delimiter ;;
DROP PROCEDURE IF EXISTS foo;;
create procedure foo ()
begin
    declare continue handler for 1060 begin end;
    alter table atable add subscriber_surname varchar(64);
    alter table atable add subscriber_address varchar(254);
end;;
call foo();;

0
$smpt = $pdo->prepare("SHOW fields FROM __TABLE__NAME__");
$smpt->execute();
$res = $smpt->fetchAll(PDO::FETCH_ASSOC);
//print_r($res);

তারপরে cycle রেস-র মাধ্যমে আপনার কলামের স্মিথের কীটির সন্ধান করুন:

    if($field['Field'] == '_my_col_'){
       return true;
    }
+

**Below code is good for checking column existing in the WordPress tables:**
public static function is_table_col_exists($table, $col)
    {
        global $wpdb;
        $fields = $wpdb->get_results("SHOW fields FROM {$table}", ARRAY_A);
        foreach ($fields as $field)
        {
            if ($field['Field'] == $col)
            {
                return TRUE;
            }
        }

        return FALSE;
    }

1
এটি আরও কার্যকরভাবে একটি লিটল করা যেতে পারে SHOW fields FROM __TABLE__NAME__ where field='_my_col_'; এবং তারপরে ফলাফলটি খালি নয় সেট করার জন্য পরীক্ষা করুন
ইউজেন মেয়ার

0

মাইএসকিউএল-এ সঞ্চিত পদ্ধতি নীচে নিম্নোক্ত সুবিধাসমূহের সাথে ডাটাবেস (গুলি) সারণীতে সারণি উপস্থিত না থাকলে বিভিন্ন ডাটাবেসগুলিতে বিভিন্ন সারণিতে (গুলি) কলাম যুক্ত করতে চাইবে

  • একাধিক কলাম বিভিন্ন ডেটাবেসে একাধিক সারণী পরিবর্তন করতে একবারে ব্যবহার যুক্ত করা যেতে পারে
  • তিনটি মাইএসকিএল কমান্ড চালিত হয়, যেমন প্রক্রিয়াটির জন্য ড্রপ, ক্রিয়েট, কল করুন
  • ডেটাবেসের নামটি USE অনুসারে পরিবর্তন করা উচিত অন্যথায় একাধিক ডেটাসের জন্য সমস্যা দেখা দিতে পারে

DROP PROCEDURE  IF EXISTS `AlterTables`;
DELIMITER $$
CREATE PROCEDURE `AlterTables`() 
BEGIN
    DECLARE table1_column1_count INT;
    DECLARE table2_column2_count INT;
    SET table1_column1_count = (  SELECT COUNT(*) 
                    FROM INFORMATION_SCHEMA.COLUMNS
                    WHERE   TABLE_SCHEMA = 'DATABASE_NAME' AND
			    TABLE_NAME = 'TABLE_NAME1' AND 
                            COLUMN_NAME = 'TABLE_NAME1_COLUMN1');
    SET table2_column2_count = (  SELECT COUNT(*) 
                    FROM INFORMATION_SCHEMA.COLUMNS
                    WHERE   TABLE_SCHEMA = 'DATABASE_NAME' AND
			    TABLE_NAME = 'TABLE_NAME2' AND 
                            COLUMN_NAME = 'TABLE_NAME2_COLUMN2');
    IF table1_column1_count = 0 THEN
        ALTER TABLE `TABLE_NAME1`ADD `TABLE_NAME1_COLUMN1` text COLLATE 'latin1_swedish_ci' NULL AFTER `TABLE_NAME1_COLUMN3`,COMMENT='COMMENT HERE';
    END IF;
    IF table2_column2_count = 0 THEN
        ALTER TABLE `TABLE_NAME2` ADD `TABLE_NAME2_COLUMN2` VARCHAR( 100 ) NULL DEFAULT NULL COMMENT 'COMMENT HERE';
    END IF;
END $$
DELIMITER ;
call AlterTables();


-1
ALTER TABLE `subscriber_surname` ADD  IF NOT EXISTS  `#__comm_subscribers`.`subscriber_surname`;

ALTER TABLE `#__comm_subscribers` MODIFY `subscriber_surname` varchar(64) NOT NULL default '';

4
আপনার সমাধানে কিছু বিবরণ যোগ করতে পারলে এটি দুর্দান্ত হবে যদি আমরা (ব্যবহারকারীরা) অন্যদের মধ্যেও এই সমাধানের সুবিধাগুলি বুঝতে পারি। এটি এটি এবং ভবিষ্যতের উত্তরের জন্য একটি উন্নতি।
Luís ক্রুজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.