作者:mobiledu2502922357 | 来源:互联网 | 2023-08-23 17:44
给创建的视图添加了两个字段的关键字约束,但是在查看视图列时发现有一个字段可以为空。可为空的字段是经过聚合函数得到的,非空字段是直接从基表获取的(在基表中该字段设置非空)。如下图:创建视图语句:
给创建的视图添加了两个字段的关键字约束,但是在查看视图列时发现有一个字段可以为空。可为空的字段是经过聚合函数得到的,非空字段是直接从基表获取的(在基表中该字段设置非空)。如下图:
创建视图语句:
视图列信息:
有两个疑问如下:
1、视图中字段的非空与空跟基表字段相关,直接获取基表的字段非空属性与及表一致,可以这样理解吗??
2、视图中字段的非空属性可以设置没吗??
6 个解决方案
如果视图中字段直接从基表中获得,不做任何处理则非空约束会从基表中传递下来;若用基表字段计算得到的字段,其非空约束只能是“Yes”。但是对其添加了关键字约束,怎么非空约束还能为“Yes”呢???那个视图添加关键字约束的作用何在??
那么视图中字段的非空约束如何设置呢???
视图没法定义字段的类型和长度等,你应该修改表的列类型
你不想为空的话,可以使用NVL函数
1、没看懂什么意思
2、为什么非要设置没呢,视图又不做数据更新。不想看到空的时候,用nvl转换一下就可以了
视图的约束应该是根据表来的 。。表字段是什么 约束 视图的就是什么约束 。。更新操作一般不会直接对视图进行 。。约不约束的没有什么意义 。。如果你想让你的视图某个字段非空 直接 在视图后面加where 条件就行了 。。就相当于约束了 。。
视图中字段的非空约束是继承基表的,在创建视图时无法添加此约束。我结贴了。