一个表表结构指定了某个字段(如cno)not null,同时加了check not null约束。
现在需要将not null约束去掉,要让cno字段可以插入空值。
于是执行了下面的语句:
1.alter table tableName drop constraints not_null_cons_cno; 2.alter table tableName modify cno null;
语句执行完毕,还是不能插入空值。
报如下错误:
ORA-01451: column to be modified to NULL cannot be modified to NULL
查询了Oracle的文档,描述如下:
Cause: the column may already allow NULL values, the NOT NULL constraint is part of a primary key or check constraint.
Action: if a primary key or check constraint is enforcing the NOT NULL constraint, then drop that constraint.
然后我发现这个字段与其他的字段组成了一个唯一性的组合索引。
于是,我修改这个索引,从中删掉cno字段。
1.删除主键;
alter table tableName drop constraints pk_tableName;
2.删除唯一索引;
drop index un_idx_table_name;
3.创建主键(不包括cno字段);
alter table tableName add constraint PK_tableName primary key (DNO, TNO, YEAR, PNO);
4.创建唯一索引(不包括cno字段)。
create unique index ix_tableName on tableName (DNO, TNO, YEAR, PNO);
第3步报错了:
ORA-02437: cannot validate (TBOSDATA.PK_VOU_NUM) - primary key violated
这个错误是说主键或唯一键有重复记录。(我的唯一性约束作用在dno,tno,cno,year,pno几个字段。
查找重复的记录:
select * from test vnt where (vnt.dno, vnt.tno, vnt.year, vnt.pno) in (select t.dno, t.tno, t.year, t.pno from test t group by t.dno, t.tno, t.year, t.pno having count(*) > 1) order by dno, tno, year, pno;
删除重复记录或修改重复记录,然后重新执行上面的3,4就OK了。
相关推荐
获取oracle 表字段,表名,以及主键之类等等的信息,获取oracle 表字段,表名,以及主键之类等等的信息获取oracle 表字段,表名,以及主键之类等等的信息获取oracle
Oracle 是一个强大的关系数据库管理系统,提供了多种方式来添加备注信息到表字段或视图字段中。在本节中,我们将详细介绍如何使用 Oracle 的 Comment 机制来添加备注信息到表字段或视图字段中。 添加备注信息到表字...
在Oracle数据库中更改数据表字段类型虽然不是一项简单的任务,但通过合理的步骤安排和谨慎的操作,完全可以避免潜在的风险,并顺利完成变更。希望本文提供的方法能够帮助你在实际工作中解决类似问题。
mysql与oracle 表字段定义比较,了解两个数据库区别
Oracle 存储过程截取表字段中带分号的信息 Oracle 存储过程是 Oracle 数据库中的一种程序单元,它可以实现复杂的业务逻辑和数据处理。在本文中,我们将讨论如何使用 Oracle 存储过程来截取表字段中带分号的信息。 ...
本文将深入探讨Oracle表字段更新的存储过程效率优化思路,以及优化后可能带来的性能提升。 首先,理解存储过程的执行原理是优化的基础。存储过程在创建时会被编译成优化器可以理解的执行计划。这个计划会保存在...
### 获取Oracle表字段、表名及主键等信息 在Oracle数据库管理中,查询表的结构信息是一项基本而重要的任务。这些信息包括表名、字段名、数据类型、字段长度、是否可为空以及主键等。掌握如何有效地获取这些信息对于...
添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter ...使用alter table 来增加、删除和修改一个列的例子。 创建表结构:create table test1(id
Oracle数据库中,表中已存在数据字段修改该字段的长度,如有疑问可沟通联系,当积分自动提升到很高的时候欢迎联系,会把积分调低。
例如,在创建了一个父表和子表之间的外键约束关系后,试图删除父表中的记录,但子表中存在对应的记录,将会出现 ORA-02292 错误。在这种情况下,可以先删除子表中的记录,然后再删除父表中的记录。也可以使用 ALTER ...
这意味着如果`job`表中的一个记录被删除,那么所有引用该`jid`的`emp`表中的记录也将被删除。 ### 创建表与约束示例 以下是创建包含外键约束的表的示例代码: ```sql CREATE TABLE job ( jid INT PRIMARY KEY, ...
为了提高开发效率,各种自动化工具应运而生,其中“根据数据库表字段自动生成JavaBean工具”便是其中之一。这个工具能够帮助开发者快速地从数据库表结构生成对应的JavaBean类,极大地减少了手动编写代码的工作量,...
要查看登录 Oracle 数据库的用户记录,可以创建一个临时日志表,并建立一个数据库表触发器来记录用户的登录行为。 创建临时日志表 首先,需要创建一个临时日志表来存储用户的登录记录。可以使用以下 SQL 语句来...
在Oracle数据库中,约束是用于确保数据完整性的规则或规定,它们定义了表中的数据必须遵循的特定条件。约束可以在创建表时定义,也可以在表已经存在后通过修改表结构来添加。以下是对Oracle数据库中四种主要约束类型...
MFC通过ADO实现了对Oracle数据库的增删改查,主要实现了数据的增加、删除、修改、查找功能。该资源本原本是日文的,我通过个人的学习和翻译,把相关重要代码的注释以及界面都翻译成了中文。并且在此基础上添加了不少...
Oracle用户数据字典以及查询表字段
Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,它提供了丰富的数据完整性约束来确保数据的准确性和一致性。在Oracle中,约束是定义在表上的规则,用于限制可以存储在表中的数据类型和值。以下是对Oracle...
在Oracle数据库管理中,了解如何查询表信息,包括获取表字段、字段注释以及表的元数据,是数据库管理员和开发人员日常工作中不可或缺的一部分。以下将详细解释这些查询语句的工作原理及其背后的数据库结构。 首先,...