2016-11-20 7 views
2

データベースに列が存在するかどうかをチェックするスクリプトが必要です。また、列が見つからない場合は作成しないでください。 コードは自分の要件に正確に適合しますか?列を作成するMysqlスクリプト

 
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = ‘management’ AND COLUMN_NAME = ‘lastname’) 
BEGIN 
    ALTER TABLE TEST ADD lastname VARCHAR 
END 

答えて

0

INFORMATION_SCHEMAは、5.0より前のMySQLではサポートされていません。 5.0より前にサポートされているストアドプロシージャもありません。したがって、MySQL 4.1をサポートする必要がある場合、この解決策は良くありません。

IF NOT EXISTS(SELECT NULL 
       FROM INFORMATION_SCHEMA.COLUMNS 
       WHERE table_name = 'management' 
       AND table_schema = 'db_name' 
       AND column_name = 'lastname') THEN 

     ALTER TABLE `management ` ADD `lastname ` VARCHAR(255) NOT NULL; 

END IF; 

別の解決策は、ちょうど

ALTER TABLE ADD lastname VARCHAR(255) NOT NULL; 

をしようとするだろう。列がすでに存在する場合は、エラーをスローする必要があります。

ERROR 1060(42S21):重複する列名「lastname」 エラーをキャッチし、アップグレードスクリプトで無視します。

関連する問題