oracle constraints(1)
oracle 的约束主要是在业务逻辑层面维护数据的完整性。主要通过程序员在应用程序中规定约束或者通过定义触发器来维护数据完整性,最后是通过使用oracle自带的约束来维护数据完整性。能使用oracle自带的约束达到要求就尽量使用oracle自带的约束,因为使用触发器等用户自定义约束都会影响数据库的性能。例如:使用触发器时会对表进行锁定并进行表扫描或者索引扫描,这些都会降低数据库性能和并发性。
oracle 约束主要分为以下几种:
not null 非空约束, unique 唯一约束, primary key 主键约束, foreign key 外键约束, check 约束。
not null 非空约束:
创建方式:1, 建表时在列级别定义(也就是只能在定义表时将约束的定义写在该列后面),2种方式。一种使用自定义约束名称,一种是使用系统默认名称。
create table t
(
tid number(8) constraint NK_t1 not null,
tname varchar2(10) not null
)
SQL> select t.constraint_name, t.table_name, t.status, t.deferrable from user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS DEFERRABLE
--------------- ------------------------------ -------- --------------
NK_T1 T ENABLED NOT DEFERRABLE
SYS_C003735 T ENABLED NOT DEFERRABLE
SQL>
2,在表建立后对表进行修改,但是要确保表中数据没有违反约束。
SQL> alter table t modify tid not null;
Table altered
SQL> select t.constraint_name, t.table_name, t.status, t.deferrable from user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS DEFERRABLE
--------------- ------------------------------ -------- --------------
SYS_C003736 T ENABLED NOT DEFERRABLE
SQL>
check 约束
创建方式:可以在表级别和列级别进行定义(既可以在列后面定义也可以在列定义完后再定义)。也是2种定义方式。
SQL> create table t
2 (
3 tid number(8) ,
4 tname varchar2(10),
5 constraint CK_T1 check ((tid is not null) and (tid > 0))
相关文档:
·向密码文件中增加、删除用户:
当初始化参数REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE时,系统允许除INTERNAL/SYS以外的其他用户以管理员身份从远端或本机登录到Oracle数据库系统,执行数据库管理工作;这些用户名必须存在于密码文件中,系统才能识别他们。由于不管是在创建数据库实例时自动创建的密码文件, ......
1)SQL Server链接服务器 Linked Server方式(SQLServer作为源服务器):
http://www.cnblogs.com/riccc/archive/2009/07/23/sql-server-linked-server.html
2)Oracle高级复制(oracle数据库之间复制):
http://www.chinaunix.net/bbsjh/8/54.html
其他技术方法:
snapshot
Replication ......
SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO ......
1.事务概述
事务(Transaction)是数据库区别于文件系统的特性之一。在文件系统中,如果你正把文件写到一
半,操作系统突然崩溃了,这个文件就很可能会被破坏。不错,确实还有一些“日报式”(journaled)之
类的文件系统,它们能把文件恢复到某个时间点。不过,如果需要保证两个文件同步,这些文件系统 ......
现象:
oracle启动监听,报告如下错误:
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
Linux Error: 32: Broken pipe
原因:
lisenter.log 文件太大了,Oracle无法对它进行操作了,导致listener无法正常启动。
listener.log 超过2G就会出问题
方法:
法1. 移除原$ ......