Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否可以使用SQL过程更改所有表的默认值?_Mysql_Sql - Fatal编程技术网

Mysql 是否可以使用SQL过程更改所有表的默认值?

Mysql 是否可以使用SQL过程更改所有表的默认值?,mysql,sql,Mysql,Sql,我需要将sql表字段的默认值从'none'更改为'null',其中数据类型为char varchar longtext等。如果不是'none',我希望保留默认值。还有500多张桌子我需要修改。有什么办法吗?我应该使用PL吗?还有其他方法吗?请提前感谢 我假设您希望将none更新为NULL,并且该列的类型为varchar update table_name set column = null where column = 'none'; 您还需要更新表的架构,需要使用更改将默认值设置为NULL

我需要将sql表字段的默认值从'none'更改为'null',其中数据类型为char varchar longtext等。如果不是'none',我希望保留默认值。还有500多张桌子我需要修改。有什么办法吗?我应该使用PL吗?还有其他方法吗?请提前感谢

我假设您希望将none更新为
NULL
,并且该列的类型为
varchar

 update table_name set column = null where column = 'none';
您还需要更新表的架构,需要使用更改将默认值设置为NULL。

代码是:

ALTER TABLE 'tablename' ALTER COLUMN 'columnname' SET DEFAULT 'none'
首先,我使用此查询从数据库中选择了所有表:

$result = mysql_query("SHOW TABLES FROM 'database'";
并使用循环选择所有列:

mysql_fetch_field 

然后我运行代码:它成功了。感谢每一位试图帮助我的人。

这不是问题。这是一份声明。你需要改变一些东西。好的你为什么把它作为一个问题发布?到目前为止你都尝试了什么?这不是免费的代码编写服务,您需要至少展示一些证据,证明您已经研究并尝试解决了问题。请注意,这不会影响默认值与输入期间设置为
none
的值之间的差异。但并没有办法做到这一点(至少我不知道),我更新了我的答案,需要更新模式以及默认值为null@AxelHIndeed,但我不是这个意思。只是指出这样一个事实,即无法查看具有默认值(未设置值)的行之间的差异和用户给出的
none
值。
'none'
似乎是默认的自定义值,当用户不添加值时插入。我们可以在模式中添加自定义默认值,
none
是自定义默认值,
(无值集)
是默认表示。我知道,但你似乎不明白(可能是我的英语不好…)下面是一个例子:
insert-into-table\u-name(column)值('none')
insert-into-table\u-name(column)值(null)
将给出相同的行('none')),但其中一个由用户指定为他想要的值,另一个是默认值。您的查询将同时更新为
null
,删除用户指定的值。这就是我要指出的警告。当然,没有其他解决方案,但应该提一提的是,更新并非真正默认的值,而是与默认值相同。