SQL UPDATE TABLE COLUMN DEFAULT NULL QUERY

时间:2013-11-10 12:35:13

标签: mysql sql sql-server alter-table

我正在尝试创建一个PHP脚本来更新表列结构。

Name                Type         Collation  Attributes      Null    Default
promotion_dt        date                                    No      0000-00-00  

我想更新结构以将Default更改为NULL,而seccond我想用NULL替换所有的0000-00-00数据。

sql_query是什么?

3 个答案:

答案 0 :(得分:1)

ALTER TABLE tbl MODIFY promotin_dt DATE DEFUALT NULL;
 UPDATE tbl SET primotion_dt = NULL WHERE promotin_dt = '0000-00-00';

答案 1 :(得分:1)

一种方法是首先改变表以允许null,然后更改默认值并最后更新等于默认值的现有值;

-- Set nullable and update the default
ALTER TABLE myTable CHANGE promotion_dt promotion_dt DATE NULL DEFAULT NULL;   

-- Update the old values to the new default
UPDATE myTable SET promotion_dt=NULL WHERE promotion_dt='0000-00-00';

答案 2 :(得分:0)

您需要在2个查询中执行此操作:

ALTER TABLE mytable MODIFY promotion_dt date NULL DEFAULT NULL;

接下来是:

UPDATE mytable SET promotion_dt=NULL where promotion_dt="0000-00-00";

注意:

正如我刚刚从Joachim上面的回答中了解到的那样,在第一个查询中我们也可以使用MODIFY而不是CHANGE,请记住这两个语法是:

ALTER TABLE mytable 
  | CHANGE [COLUMN] old_col_name new_col_name column_definition
        [FIRST|AFTER col_name]
  | MODIFY [COLUMN] col_name column_definition
        [FIRST | AFTER col_name]

也就是说,CHANGE允许更改列名称,因此需要两个列名称,而MODIFY则保持列名称不变