今天有同事在问 复制表的时候 会把表的 not null 属性也复制过来,而他要求对复制过来的字段不加not null 字段

SQL> desc DW_ACCOUNT

名称                                      是否为空? 类型

----------------------------------------- -------- ----------------------------

ACCT_ID                                   NOT NULL NUMBER(12)

ACCT_CD                                            VARCHAR2(100)

AREA_ID                                            NUMBER(5)

AREA_NAME                                          VARCHAR2(200)

PARTY_ID                                           NUMBER(12)

ACCT_STATUS_CD                                     NUMBER(5)

ACCT_STATUS                                        VARCHAR2(200)

ACCT_STATUS_REASON_CD                              NUMBER(5)

CREDIT_CLASS_CD                                    NUMBER(5)

LIMIT_QTY                                          NUMBER(12)

PROD_ID                                            NUMBER(12)

ACCT_TYPE_CD                                       NUMBER(5)

START_DT                                           DATE

IF_FREE                                            VARCHAR2(1)

ACCT_NAME                                          VARCHAR2(200)

RELATED_ACCT_ID                                    NUMBER(12)

PAYMENT_ACCOUNT_ID                                 NUMBER(12)

这里可以看到 ACCT_ID 是 NOT NULL的限制,我们这里复制DW_ACCOUNT的表结构

SQL> create table zyp_test as select * from dw_account where 1=2;

表已创建。

SQL> desc zyp_test;

名称                                      是否为空? 类型

----------------------------------------- -------- ----------------------------

ACCT_ID                                   NOT NULL NUMBER(12)

ACCT_CD                                            VARCHAR2(100)

AREA_ID                                            NUMBER(5)

AREA_NAME                                          VARCHAR2(200)

PARTY_ID                                           NUMBER(12)

ACCT_STATUS_CD                                     NUMBER(5)

ACCT_STATUS                                        VARCHAR2(200)

ACCT_STATUS_REASON_CD                              NUMBER(5)

CREDIT_CLASS_CD                                    NUMBER(5)

LIMIT_QTY                                          NUMBER(12)

PROD_ID                                            NUMBER(12)

ACCT_TYPE_CD                                       NUMBER(5)

START_DT                                           DATE

IF_FREE                                            VARCHAR2(1)

ACCT_NAME                                          VARCHAR2(200)

RELATED_ACCT_ID                                    NUMBER(12)

PAYMENT_ACCOUNT_ID                                 NUMBER(12)

可以看到 NOT NULL的属性也随之被复制过来了,如果能够在复制的时候 不复制NOT NULL的属性呢?

SQL> drop table zyp_test;

表已删除。

SQL> purge table zyp_test;

表已清除。

SQL> create table zyp_test (acct_id null, acct_cd not null) as select acct_id,ac

ct_cd from dw_account where 1=2;

表已创建。

SQL> desc zyp_test;

名称                                      是否为空? 类型

----------------------------------------- -------- ----------------------------

ACCT_ID                                            NUMBER(12)

ACCT_CD                                   NOT NULL VARCHAR2(100)

由于字段太多我就不做完全的复制了,这里其实可以发现 我们可以将源表的字段属性进行更改,NULL和NOT NULL都可以进行设置,当然如果在字段后面不加NULL或者NOT NULL的话,复制的表就会完全继承源表的字段属性。

那么复制过来的原本非空(NOT NULL)的 会不会有值呢?

再次进行测试:

SQL> create table zyp_test (acct_id null, acct_cd not null) as select acct_id,ac

ct_cd from dw_account where rownum<2;

表已创建。

SQL> select * from zyp_test;

ACCT_ID   ACCT_CD

--------------------------------------------------------------------------------

8.2000E+11   822818663

由此可以看到,字段属性发生改变不会对非空字段修改为允许空 字段造成影响,而如果将允许空字段改为非空字段,遇到null值就会报错了。

SQL> CREATE TABLE zyp_test (acct_id null, credit_class_cd NOT NULL) AS SELECT ac

ct_id,credit_class_cd FROM DW_ACCOUNT WHERE ROWNUM<2;

CREATE TABLE zyp_test (acct_id null, credit_class_cd NOT NULL) AS SELECT acct_id

,credit_class_cd FROM DW_ACCOUNT WHERE ROWNUM<2

*

第 1 行出现错误:

ORA-01400: 无法将 NULL 插入 ("STATA"."ZYP_TEST"."CREDIT_CLASS_CD")

oracle改表结构非空字段类型,oracle 表结构的非完全复制相关推荐

  1. 使用动态SQL获取具有非空字段的自定义表结构

    目录 介绍 背景 使用代码 兴趣点 我如何才能从查询中获取非空字段?是的,您可以使用现代的编程语言轻松完成此操作,但是通过从表中获取冗余信息可能会浪费资源,而且很多时候,它可能会添加冗余代码.从5.3 ...

  2. orika 映射非空字段_Orika:将JAXB对象映射到业务/域对象

    orika 映射非空字段 这篇文章着眼于使用Orika将JAXB对象映射到业务域对象. 本月初, 我使用基于反射的Dozer讨论 了相同的映射用例 . 在本文中,我假设需要映射相同的示例类,但是它们将 ...

  3. [存储过程]sql server 中 统计一条记录中 非空 字段个数 ,并且计算它所占百分比

    integrity 是表中存放非空字段百分比 的字段 companyName 等字段是参与统计的成员 看代码 drop procedure update_company_intergrity ; cr ...

  4. oracle查视图字段类型,oracle,如何查看视图结构,获得视图中的字段名称、字段类型、字段长度等。...

    需要获得一个视图中的字段名称.字段类型.字段长度等信息,该如何编写sql语句. 通过select * from user_views可以获得给定用户下所有的视图名称了,但是没找到如何获取视图结构的解决 ...

  5. oracle判断非空并拼接,oracle sql 判断字段非空,数据不重复,插入多跳数据

     oracle sql 判断字段非空,数据不重复 select distinct(mobile) from wx_user_mobile where active_time is not null ...

  6. oracle 判断非空字段

    sql中判断非空不能用等号,因为null在sql中被看作特殊符号,必须使用关键字 is和not select * from A where info is not null 非空: select id ...

  7. oracle 表约束非空,oracle--约束(主键、非空、检查)

    问题1:学号重复了,数据还可以插入成功 使用主键约束:学号是唯一标识一条数据的,所以必须唯一且不能为空 ---(1).在确定为主键的字段后添加 primary key关键字 ---(2).在创建表的后 ...

  8. oracle如何搜索字段类型,Oracle通过字段类型查询字段

    有的时候我们需要在oracle中通过字段名.字段类型.字段长度.字段注释.表名来查询具体的字段信息.比如:昨天同事问我,咱们数 有的时候我们需要在Oracle中通过字段名.字段类型.字段长度.字段注释 ...

  9. php中表单的非空验证,Javascript的表单与验证-非空验证_javascript技巧

    JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证. 表单提交前要检查数据的合法性 在要对表单里的数据进行验证的时候,可以利用getElementById()来 ...

最新文章

  1. 相机模拟激光雷达 建图
  2. NodeJS学习之网络操作
  3. linux线程引起jvm崩溃,JVM宕机分析
  4. win7上面的ie8和chrome90简直是两个时代的产物
  5. 商城网站该如何选择虚拟主机
  6. “我在B站有套房”成真:云蹦迪、不停学还健身
  7. [Vampier-magnetic material]3:cylinder core-shell material
  8. Atiitt 项目 产品 实现的目标
  9. 递归算法经典实例python-Python实现经典递归算法
  10. 黑苹果 惠普笔记本电池补丁_小米笔记本Pro 黑苹果 改装内置WIFI和蓝牙
  11. 初中学校计算机机房管理制度,学校机房管理制度
  12. LINUX企业应用案例精解 第2版 李晨光
  13. 移动机器人 | 同时定位与建图
  14. BindingResult总结以及注意事项
  15. log4j2配置详情
  16. 航天软件通过注册:年营收15亿 航天科技控制63.8%股权
  17. 九天揽月带你玩转EKF纸老虎(3)
  18. lte盲重定向_TD-LTE网络基于PS业务的重定向过程研究
  19. 基于android的生日小助手,毕业答辩-基于Android的生日管家App的设计与实现
  20. 你的域名前要加www吗?

热门文章

  1. 大数据可视化平台可以实现什么功能
  2. HBase-shell及happyhbase
  3. opencv检测相交点_OpenCV学习笔记(八) 边缘、线与圆的检测
  4. python语言format用法_format()函数的定义和用法总结
  5. vue 秒转换为时分秒_三年级数学上册时分秒换算口诀(附重点习题)
  6. linux 硬连接 跨分区,Linux硬盘分区和软硬链接
  7. php ruby 优缺点,php,python,ruby,perl的优缺点?
  8. python算法-冒泡排序
  9. 购物商城Web开发第十四天
  10. Vue+Webpack常见问题(持续更新)