当前位置: 首页 > 面试题库 >

修改表以修改列的默认值

濮阳奇逸
2023-03-14
问题内容

我有一个需要修改数据库表中列默认值的要求。该表已经是数据库中的现有表,并且当前该列的默认值为NULL。现在,如果将新的默认值添加到此列,如果我是正确的话,它将列的所有现有NULL更新为新的DEfault值。有没有一种方法可以不执行此操作,但仍在列上设置新的默认值。我的意思是我不想更新现有的NULL,并希望它们保留为NULL。

在这方面的任何帮助,不胜感激。谢谢


问题答案:

您对将会发生的事情的信念是不正确的。为列设置默认值不会影响表中的现有数据。

我创建一个表,该表的列col2没有默认值

SQL> create table foo(
  2    col1 number primary key,
  3    col2 varchar2(10)
  4  );

Table created.

SQL> insert into foo( col1 ) values (1);

1 row created.

SQL> insert into foo( col1 ) values (2);

1 row created.

SQL> insert into foo( col1 ) values (3);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3

如果我随后更改表以设置默认值,则有关现有行的内容将保持不变

SQL> alter table foo
  2    modify( col2 varchar2(10) default 'foo' );

Table altered.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3

SQL> insert into foo( col1 ) values (4);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo

即使随后我再次更改默认值,现有行也将保持不变

SQL> alter table foo
  2    modify( col2 varchar2(10) default 'bar' );

Table altered.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo

SQL> insert into foo( col1 ) values (5);

1 row created.

SQL> select * from foo;

      COL1 COL2
---------- ----------
         1
         2
         3
         4 foo
         5 bar


 类似资料:
  • 问题内容: 如何将列的默认值从“无”更改为其他值?例如,如果我在创建行时未指定日期,则希望我的日期的默认值是0000-00-00。 我在phpMyAdmin中了解这一点,但是我不确定如何通过命令提示符来做到这一点。 我也了解在添加列时如何执行此操作。但是,我所有的列均已制成,并且其中一些包含数据。 通过搜索,我找到了这条线,但是我不确定那是我想要的吗? 问题答案: 使用 ALTER TABLE 来

  • 默认情况下,Tomcat配置的默认端口是8080。这就是为什么所有已部署的Web应用程序都可以通过URL访问的原因:http://localhost:8080/yourapp。如果希望应该在80端口上运行,则需要将默认端口8080更改为80,这是HTTP连接器的默认端口。 要更改此端口,请打开并找到以下内容: 更改为以下内容: 修改后,您可以使用"http://localhost/"来访问您的应用

  • 我有一个apikey“令牌”,它必须在每个请求中作为查询参数提供。我如何设置翻新,以便始终在请求中包含此查询参数? 我当前将内标识作为默认参数提供: 但是由于我知道每个请求都需要相同的令牌,所以在我创建的每个请求函数中必须提供它作为默认参数,这感觉是多余的。我如何设置reverfit来用默认的查询参数修饰每个传出的请求? 这是我如何构建reverfit2实例的: 我认为在调用.build()之前,

  • 本文向大家介绍MySQL5.7修改默认root密码,包括了MySQL5.7修改默认root密码的使用技巧和注意事项,需要的朋友参考一下 MySQL5.7 开始,增加了很多安全性的更新,老版本的用户可能会有一些不习惯。 5.7.6 版本以后,首次安装并启动MySQL数据库时,会生成一个临时密码到日志文件。如下: 临时密码为:nWoo>o0rXtr4。 使用该密码登陆数据库,但是不能进行任何操作,提示

  • 修改游戏基本设定 在已经调整了对话框的情况下,是否会觉得白底的对话框和黑底的姓名框,需要配上和原来不同的颜色和文字效果呢。 这时候就轮到Config.tjs上场了。 Config.tjs是吉里吉里/KAG的基本设定文件,包含了大量可以调整的细节。 不过Config.tjs所记录的只是一个默认设置,大部分功能也可以在后来的脚本里修改。 但对于游戏里随时都要用到的东西,例如说字体的默认颜色外观等等,直

  • 我需要创建一个客户列表,每个客户都有一个工作列表。当将一个列表分配给一个客户机时,它是通过引用传递的,对列表的任何更改(例如清除列表)也会反映在客户机对象中。 我该如何避免这种情况?