Heim > Datenbank > MySQL-Tutorial > MySQL ermittelt, ob eine Spalte vorhanden ist

MySQL ermittelt, ob eine Spalte vorhanden ist

(*-*)浩
Freigeben: 2019-05-11 09:55:09
Original
5072 Leute haben es durchsucht

In diesem Artikel wird eine gespeicherte Prozedur verwendet, um festzustellen, ob eine Spalte (ein Feld) vorhanden ist. Bitte beachten Sie die Details.

Empfohlener Kurs: MySQL-Tutorial.

MySQL ermittelt, ob eine Spalte vorhanden ist

Beurteilen Sie, ob das Feld vorhanden ist:

DROP PROCEDURE IF EXISTS schema_change;  
DELIMITER //
CREATE PROCEDURE schema_change() BEGIN 
DECLARE  CurrentDatabase VARCHAR(100);
SELECT DATABASE() INTO CurrentDatabase;
IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema=CurrentDatabase AND table_name = 'rtc_order' AND column_name = 'IfUpSend') THEN  
    ALTER TABLE rtc_order
    ADD COLUMN `IfUpSend` BIT  NOT NULL  DEFAULT 0 COMMENT '是否上传 是否上传';
END IF;  
END//  
DELIMITER ;  
CALL schema_change();
Nach dem Login kopieren

MySQL ermittelt, ob das Feld vorhanden ist, ändern Sie das Feld:

DROP PROCEDURE IF EXISTS proc_tempPro;
if(@count>0) THEN 
 alter table 表名 change column `旧列名` `新列名` varchar(30) comment '字段说明';
end if;
end;
call proc_tempPro;
DROP PROCEDURE IF EXISTS proc_tempPro;
Nach dem Login kopieren

Beurteilen Sie anhand der gespeicherten Prozedur, ob das Feld vorhanden ist. Wenn nicht, erhöhen Sie es:

DROP PROCEDURE IF EXISTS pro_AddColumn;
CREATE PROCEDURE pro_AddColumn() BEGIN
IF NOT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_name='component' AND COLUMN_NAME='PRINT_CHECK_STATUS') THEN
ALTER TABLE component ADD PRINT_CHECK_STATUS int(10) default 0;
END IF;
IF NOT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_name='component' AND COLUMN_NAME='PRINT_CHECK_TIME') THEN
ALTER TABLE component ADD PRINT_CHECK_TIME datetime NULL;
END IF;
IF NOT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=podcloud AND table_name='component' AND COLUMN_NAME='PRINT_CHECK_BACK_REASON') THEN
ALTER TABLE component ADD PRINT_CHECK_BACK_REASON varchar(500) default null;
END IF;
END;
CALL pro_AddColumn;
DROP PROCEDURE pro_AddColumn;

------------------------------------------------------------------------------------------------
DROP PROCEDURE IF EXISTS pro_AddIndex;  
 DELIMITER;
 CREATE PROCEDURE pro_AddIndex() BEGIN IF NOT EXISTS (SELECT * FROM information_schema.statistics WHERE table_schema=CurrentDatabase AND table_name = 'rtc_phototype' AND index_name = 'index_name') THEN  
     ALTER TABLE `rtc_Phototype` ADD INDEX index_name ( `imgtype` );
  END IF;  
 END;
 DELIMITER;   
 CALL pro_AddIndex();
 Drop procedure pro_AddIndex;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonMySQL ermittelt, ob eine Spalte vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage