oracle如何取消唯一 oracle删除unique

powerdesigner导出oracle语句是如何去掉唯一约束的引号使用PowerDesigner生成数据库 建表SQL 脚 本时,尤其是Oracle数据库时,表名一般会带引号 。其实加引号是PL/SQL的规范 , 数据库会严格按照“”中的名称建表,如果没有“”,会按照 ORACLE默认的设置建表(DBA STUDIO里面) , 默认是全部大写,这样,在ORACLE数据库里的字段就如“Column_1” 。如果你把引号去掉,ORACLE自动默认为全部大 写,即“COLUMN_1”,所以这段SQL在PL/SQL中执行的时候是没有任何问题的 , 如果不加引号,在PL/SQL会自动识别为大写 。如果加了引 号 , sql或者hql查询“Column_1='XXX'”时,就会报错:ORA-00904: "COLUMN_1": 无效的标识符,除非写为“‘Column_1’='XXX'” 。
这个问题是生成脚本格式的问题,因此,我们可以 尝试在DBMS配置文件中修改相应的格式设置来解决这个问题 。选择DBMS Properties,选择Script-Sql-Format,有一项CaseSensitivityUsingQuote, 它的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”,点击【应用】按钮 。
1、去掉Oracle生成的SQL创建语句中的双引号
用powerdesigner导出orale数据库的建表sql时,默认会给表名和字段名加上双引号,如下图:
这样给操作数据库带来很大的不便,解决的办法是设置Database菜单,
然后点击Edit Current DBMS菜单,再依次点开Script-Format,然后找到CaseSensitivityUsingQuote
将其设为NO,即可 。如下图:
如果带有包的话,导出时要选择包中的表 。
2、PowerDesign高级应用
编写相关的VBS脚本在PowerDesign里自定义一些命令与操作等,具体的可以参考C:\Program Files\Sybase\PowerDesigner 9\VB Scripts目录下的脚本示例 。怎么运用这些脚本呢?
在Tools-Execute Commands里可以进行操作 。具体说明在帮助里写的很清楚 。帮助的位置在 PowerDesigner General Features Guide- PART 2. Modeling Guide-CHAPTER 8. Managing Objects-Accessing objects using VBScript-VBScript uses in PowerDesigner
PowerDesign的使用主要是DBMS的配置
3、修改建表脚本生成规则 。
如果每个表格都有相同的字段 , 可以如下修改:
Database - Edit Current DBMS 展开 Script - Object - Table - Create 见右下的Value值,可以直接修改如下:
/* tablename: %TNAME% */
create table [%QUALIFIER%]%TABLE% (
%TABLDEFN%
tschar(19)null default convert(char(19),getdate(),20),
drsmallintnull default 0
)
[%OPTIONS%]
其中的 ts、dr 两列会在生成SQL脚本的时候自动的插入每个表格中,其中的%TNAME% 变量是给每个表格的SQL添加一个该表的Name值注释 。
4、修改字段生成规则 。
要给每个字段都添加一个注释的话 , 同一窗口中展开 Script - Object - Column - Add 的 Value修改为:
:COLUMN% [%COMPUTE%?AS (%COMPUTE%): :DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default 轋AULT%]
[[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/
其中的%COLNNAME%就是列的Name值(可以是中文)
5、修改外键命名规则 。
选择Database—Edit Current DBMS
选择Scripts-》Objects-》Reference-》ConstName
可以发现右侧的Value为:
FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%
可见,该命名方法是:'FK_' 8位子表名 9位Reference名 8位父表名,你可以根据这中模式自定义为:
FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%,
可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1
掌握这种方法后就可以按照自己的想法修改了
生成建库脚本SQL文件中的表头注释很讨厌 , 可以在 Databse - Generate Database (Ctrl G)窗口中,选择Options卡片,去掉Usage的Title钩选项即可 。
6、添加外键
Model - References新建一条外键后,双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段 。如下图:
接着出现如下画面:
按照步骤操作即可 。
7、取消name和code联动
在修改name的时候,code的值将跟着变动,很不方便 。修改方法:PowerDesign中的选项菜单里修改,在[Tool]--[General Options]-[Dialog]-[Operating modes]-[Name to Code mirroring],这里默认是让名称和代码同步,将前面的复选框去掉就行了 。如图:
编写相关的VBS脚本在PowerDesign里自定义一些命令与操作等 , 具体的可以参考C:\Program Files\Sybase\PowerDesigner 9\VB Scripts目录下的脚本示例 。怎么运用这些脚本呢?
在Tools-》Execute Commands里可以进行操作 。具体说明在帮助里写的很清楚 。帮助的位置在 PowerDesigner General Features Guide- PART 2. Modeling Guide-CHAPTER 8. Managing Objects-Accessing objects using VBScript-VBScript uses in PowerDesigner
PowerDesign的使用主要是DBMS的配置
1、修改建表脚本生成规则 。如果每个表格都有相同的字段,可以如下修改:
Database - Edit Current DBMS 展开 Script - Object - Table - Create 见右下的Value值,可以直接修改如下:
/* tablename: %TNAME% */
create table [%QUALIFIER%]%TABLE% (
%TABLDEFN%
tschar(19)null default convert(char(19),getdate(),20),
drsmallintnull default 0
)
[%OPTIONS%]
其中的 ts、dr 两列会在生成SQL脚本的时候自动的插入每个表格中,其中的%TNAME% 变量是给每个表格的SQL添加一个该表的Name值注释 。
2、修改字段生成规则 。要给每个字段都添加一个注释的话,同一窗口中展开 Script - Object - Column - Add 的 Value修改为:
:COLUMN% [%COMPUTE%?AS (%COMPUTE%): :DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default 轋AULT%]
[[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/
其中的%COLNNAME%就是列的Name值(可以是中文)
3、修改外键命名规则 。选择Database—Edit Current DBMS
选择Scripts-》Objects-》Reference-》ConstName
可以发现右侧的Value为:
FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%
可见,该命名方法是:'FK_' 8位子表名 9位Reference名 8位父表名,你可以根据这中模式自定义为:
FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%,
可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1
掌握这种方法后就可以按照自己的想法修改了
生成建库脚本SQL文件中的表头注释很讨厌,可以在 Databse - Generate Database (Ctrl G)窗口中 , 选择Options卡片,去掉Usage的Title钩选项即可 。
4、添加外键
Model - References新建一条外键后 , 双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段
5、去掉生成的SQL脚本双引号的问题:ORACLE 8I2::Script\Sql\Format\CaseSensitivityUsingQuote改成No,默认是Yes所以会有双引号 。
在修改name的时候,code的值将跟着变动,很不方便 。修改方法:PowerDesign中的选项菜单里修改,在[Tool]--[General Options]-[Dialog]-[Operating modes]-[Name to Code mirroring],这里默认是让名称和代码同步,将前面的复选框去掉就行了 。
Oracle数据库中违反唯一约束的处理 根据NULLoracle如何取消唯一的定义 NULL表示的是未知 因此两个NULL比较的结果既不相等 也不不等 结果仍然是未知 根据这个定义 多个NULL值的存在应该不违反唯一约束
实际上Oracle也是如此实现的
【oracle如何取消唯一 oracle删除unique】 SQL CREATE TABLE T (ID NUMBER);
表已创建
SQL ALTER TABLE T ADD UNIQUE (ID);
表已更改
SQL INSERT INTO T VALUES ( );
已创建 行
SQL INSERT INTO T VALUES ( );
INSERT INTO T VALUES ( )
*第 行出现错误:
ORA : 违反唯一约束条件 (YANGTK SYS_C )
SQL INSERT INTO T VALUES (NULL);
已创建 行
SQL INSERT INTO T VALUES (NULL);
已创建 行
SQL INSERT INTO T VALUES (NULL);
已创建 行
但是当唯一约束为复合字段时 则情况发生oracle如何取消唯一了变化 根据Oracle文档的描述 对于复合字段的唯一约束 不为空字段的值是不能重复的 也就是说 如果两个字段构成oracle如何取消唯一了一个唯一约束 其中一个字段为空 那么另一个字段的值不能出现重复
SQL DROP TABLE T PURGE;
表已删除
SQL CREATE TABLE T (ID NUMBER ID NUMBER);
表已创建
SQL ALTER TABLE T ADD UNIQUE (ID ID );
表已更改
SQL INSERT INTO T VALUES ( );
已创建 行
SQL INSERT INTO T VALUES ( NULL);
已创建 行
SQL INSERT INTO T VALUES ( NULL);
已创建 行
SQL INSERT INTO T VALUES ( NULL);
INSERT INTO T VALUES ( NULL)
*第 行出现错误:
ORA : 违反唯一约束条件 (YANGTK SYS_C )
SQL INSERT INTO T VALUES (NULL NULL);
已创建 行
SQL INSERT INTO T VALUES (NULL NULL);
已创建 行
SQL INSERT INTO T VALUES (NULL NULL);
已创建 行
对于全部为NULL的情况 仍然和单字段唯一约束一样 不会造成重复 但是对于部分为NULL的情况 就如上面例子所示 只要其中不为NULL的部分发生oracle如何取消唯一了重复 Oracle就认为约束发生oracle如何取消唯一了重复
而这似乎和NULL的定义有所冲突 第一次看concept的时候一直没有搞明白Oracle为什么这么实现 不过这次再看concept的时候 已经想明白了
由于Oracle的唯一约束是依赖索引实现的 而Oracle的BTREE索引又是不存储NULL值的 所以键值全部为NULL的记录不会记录在索引中 因此也就不会违反唯一约束了 而对于部分为NULL的记录 索引是要记录数值的 因此一旦键值中非NULL部分发生了冲突 Oracle就认为违反了的唯一约束
lishixinzhi/Article/program/Oracle/201311/18438
oracle往dept表中插入dept表中插入重复数据,如何删除唯一约束,以及其它表对dept主键的外键引用首先删除emp表中关联dept的外键约束:
alter table EMP drop constraint FK_DEPTNO;
再删除dept的主键约束:
alter table DEPT drop constraint PK_DEPT;
这样就能插入重复数据了 。
在导入Oracle数据库的时候违反唯一约束条件是为什么?要怎么解决反唯一约束条件?应该是主键重复吧 。
解决的方法要看你用什么方法导入数据了 。
如果是oracle的import命令,可以设定参数,采用忽略错误导入的方式导入,或者无条件覆盖原数据 。
oracle删除没有约束名称的唯一约束alter table table_name modify name varchar(10) null;
not null就是唯一性约束
oracle中怎么删除唯一约束unique?首先oracle如何取消唯一你得确定数据库约束表里是否有AN_SHORT_NAME_INDEX这个约束
(如果oracle如何取消唯一你有管理员权限oracle如何取消唯一的话)select * from dba_constraintswhere constraint_name='AN_SHORT_NAME_INDEX';
如果有oracle如何取消唯一的话oracle如何取消唯一,会显示这个约束的所有信息 。
剩下的自己看着弄吧 。
希望能解决你的问题 。
oracle如何取消唯一的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于oracle删除unique、oracle如何取消唯一的信息别忘了在本站进行查找喔 。

    推荐阅读