如何在mysql的表exists中添加动态列?
我有一个表,我想添加列,但列的名称将是可变的 像这样:如何在mysql的表exists中添加动态列?,mysql,Mysql,我有一个表,我想添加列,但列的名称将是可变的 像这样: $coulName = col_1_2; ALTER TABLE `table name` ADD `$coulmName` DOUBLE NOT NULL DEFAULT '0' AFTER `col2`; 我如何才能做到这一点?您需要为此使用: SET @colName = 'col_1_2'; SET @s = CONCAT('ALTER TABLE `mytable` ADD `', @colName,
$coulName = col_1_2;
ALTER TABLE `table name` ADD `$coulmName` DOUBLE NOT NULL DEFAULT '0' AFTER `col2`;
我如何才能做到这一点?您需要为此使用:
SET @colName = 'col_1_2';
SET @s = CONCAT('ALTER TABLE `mytable` ADD `', @colName,
'` DOUBLE NOT NULL DEFAULT 0 AFTER `col2`');
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
为此,您需要使用一个:
SET @colName = 'col_1_2';
SET @s = CONCAT('ALTER TABLE `mytable` ADD `', @colName,
'` DOUBLE NOT NULL DEFAULT 0 AFTER `col2`');
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
在MySQL中,您只能使用准备好的语句来实现这一点,因为您不能将变量绑定到表或列名。这意味着您必须将sql语句组装成字符串并执行它 但是,您也可以通过应用程序代码来实现这一点——变量名表明您可以使用php。同样适用:您必须连接sql语句字符串,不能使用参数 MySQL中的代码如下所示:
@coulName = 'col_1_2';
@sql = 'ALTER TABLE `table name` ADD `',@coulmName,'` DOUBLE NOT NULL DEFAULT '0' AFTER `col2`;
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
但是,我不确定定期动态更改现有数据结构是否真的是个好主意。这通常表明数据库设计很差。在MySQL中,您只能使用准备好的语句来实现这一点,因为您无法将变量绑定到表或列名。这意味着您必须将sql语句组装成字符串并执行它 但是,您也可以通过应用程序代码来实现这一点——变量名表明您可以使用php。同样适用:您必须连接sql语句字符串,不能使用参数 MySQL中的代码如下所示:
@coulName = 'col_1_2';
@sql = 'ALTER TABLE `table name` ADD `',@coulmName,'` DOUBLE NOT NULL DEFAULT '0' AFTER `col2`;
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
但是,我不确定定期动态更改现有数据结构是否真的是个好主意。这通常表明数据库设计很差。您可能需要编写。您可能需要编写。