oracle如何取消唯一 oracle删除唯一约束-成都快上网建站

oracle如何取消唯一 oracle删除唯一约束

怎么取消字段唯一性约束

1)禁止所有表约束的SQL

成都创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为皮山企业提供专业的成都做网站、成都网站制作,皮山网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

select 'alter table '+name+' nocheck constraint all' from sysobjects where type='U'

2)删除所有表数据的SQL

select 'TRUNCATE TABLE '+name from sysobjects where type='U'

3)恢复所有表约束的SQL

select 'alter table '+name+' check constraint all' from sysobjects where type='U'

4)删除某字段的约束

declare @name varchar(100)

--DF为约束名称前缀

select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('表名') and b.id=a.cdefault and a.name='字段名' and b.name like 'DF%'

--删除约束

alter table 表名 drop constraint @name

--为字段添加新默认值和约束

ALTER TABLE 表名 ADD CONSTRAINT @name DEFAULT (0) FOR [字段名]

--删除约束

ALTER TABLE tablename

Drop CONSTRAINT 约束名

--修改表中已经存在的列的属性(不包括约束,但可以为主键或递增或唯一)

ALTER TABLE tablename

alter column 列名 int not null

--添加列的约束

ALTER TABLE tablename

ADD CONSTRAINT DF_tablename_列名 DEFAULT(0) FOR 列名

--添加范围约束

alter table tablename add check(性别 in ('M','F'))

oracle往dept表中插入dept表中插入重复数据,如何删除唯一约束,以及其它表对dept主键的外键引用

首先删除emp表中关联dept的外键约束:

alter table EMP drop constraint FK_DEPTNO;

再删除dept的主键约束:

alter table DEPT drop constraint PK_DEPT;

这样就能插入重复数据了。

oracle中怎么删除唯一约束unique?

首先你得确定数据库约束表里是否有AN_SHORT_NAME_INDEX这个约束

(如果你有管理员权限的话)select * from dba_constraints where constraint_name='AN_SHORT_NAME_INDEX';

如果有的话,会显示这个约束的所有信息。

剩下的自己看着弄吧。

希望能解决你的问题。

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%

ts char(19) null default convert(char(19),getdate(),20),

dr smallint null default 0

)

[%OPTIONS%]

其中的 ts、dr 两列会在生成SQL脚本的时候自动的插入每个表格中,其中的%TNAME% 变量是给每个表格的SQL添加一个该表的Name值注释。

4、修改字段生成规则。

要给每个字段都添加一个注释的话,同一窗口中展开 Script - Object - Column - Add 的 Value修改为:

%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]

[[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%

ts char(19) null default convert(char(19),getdate(),20),

dr smallint null default 0

)

[%OPTIONS%]

其中的 ts、dr 两列会在生成SQL脚本的时候自动的插入每个表格中,其中的%TNAME% 变量是给每个表格的SQL添加一个该表的Name值注释。

2、修改字段生成规则。要给每个字段都添加一个注释的话,同一窗口中展开 Script - Object - Column - Add 的 Value修改为:

%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]

[[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删除唯一约束sql语句

假如有主表 test_main 与 子表 test_sub

SQL -- 创建外键(默认选项)

SQL ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;

Table altered.

删除外键约束

ALTER TABLE test_sub DROP CONSTRAINT main_id_cons;

Oracle之约束

约束用于限制加入表数据的类型,目的是保证数据的一致性和完整性

创建格式:在创建表时规定约束(在Create添加),也可以在创建之后添加(Alter table)。

约束类型:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK、DEFAULT。

非空约束就是限制必须为某个列提供值,不允许有空值的存在。

空值(NULL)是不存在的值,它既不是数字0也不是空字符串,而是不存在未知的情况,即:该列的所有值不能为空,但可以为空字符或者0。

结果:通过desc查看会发现Nullable那一列的Y消失,表示此列不能为空。且在插入数值的时候此列必须添加数值,否则会报错。

取消非空约束使用alter方法:alter table test1 modify Author null; 设置test1的Author可以

唯一性约束强调所在的列不允许有相同的值,但可以有多个Null。

其定义比主键约束弱,即他的列允许有空值(主键不允许有空值),唯一性约束的主要作用是保证在除主键外,其他列值得唯一性。

即:直接在列后面添加unique,

或在列后面添加 constraint 约束名 unique,

或在最后添加constraint 约束 unique(列名),

或者alter table 表名 add constraint 约束名 unique(列名);

建议使用的方法为alter和在最后添加最后添加constraint 约束 unique(列名)。

注:添加约束名的好处为:便于删除操作,在删除时需要通过约束名来完成操作。同时如果不添加约束名则系统会自动生成约束名,在表移动等操作时,约束名也会更改,会造成后期操作的麻烦。

取消唯一性约束:alter table test3 drop constraint QQ_UK2;

主键约束唯一地标识了每一行记录(非空+唯一),在一个表中,最多只能有一个主键约束,主键约束既可以由一个列组成,也可以由两个或两个以上列组成(这种称联合主键)。

具体的方法和添加唯一约束相同,建议使用的方法为alter和在最后添加最后添加constraint 约束 unique(列名)。

删除主键:alter table 表名 drop constraint 约束名

外键约束主要是在B表中的某一列受到A表的制约,B的那一列的值只能是A内的值,比如工资表的员工号必须受员工表的员工号限制一样,工资表不能有不存在的员工号。

一般外键约束会使用两个表进行关联,外键是指"当前表"引用"另一个表"的某一列或某几列。在另一个表中,被引用的列必须具有主键约束或者唯一性约束,不存在的数据不能出现在当前表的对应列中。一般情况下当删除被引用表中数据时,该数据也不能出现在外键列中,如果存在则删除失败。

删除外键约束:alter table test5_1 drop constraint FK_test_5_1;

check约束是为了让表中某字段值只能输入固定的值。

check设置数值范围:constraint check 表名 check (列名 between 小范围 and 大范围);

设置为大写:constraint check 表名 check (列名 = upper(列名));

取消 alter table test6_2 drop constraint check_test_6_2;

默认约束是设置列的默认值,即当插入一行时,若不给出该列的值,就用默认值代替。

结果:在添加数据的时候,如果在设置有默认值的列没有添加数据则会把默认值添加进去。

取消默认约束 alter table test2 modify BOOKNAME default null;

注:

add用于修改字段类型和长度的(即修改字段的属性)

modify修改表的数据结构。

update是修改数据内容的。

drop是删除数据内容。


本文名称:oracle如何取消唯一 oracle删除唯一约束
文章位置:http://kswjz.com/article/hhhjjg.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流