约束、规则、默认值和触发器

原创 2004年09月24日 12:07:00
一、NOT NULL 指定不接受 NULL 值的列。

二、CHECK 约束对可以放入列中的值进行限制,以强制执行域的完整性。

CHECK 约束指定应用于列中输入的所有值的布尔(取值为 TRUE 或 FALSE)搜索条件,拒绝所有不取值为 TRUE 的值。可以为每列指定多个 CHECK 约束。下例显示名为 chk_id 约束的创建,该约束确保只对此关键字输入指定范围内的数字,以进一步强制执行主键的域。

CREATE TABLE cust_sample
    (
    cust_id                int        PRIMARY KEY,
    cust_name            char(50),
    cust_address            char(50),
    cust_credit_limit    money,
    
    )

对于 UNIQUE 约束中的列,表中不允许有两行包含相同的非空值。主键也强制执行唯一性,但主键不允许空值。UNIQUE 约束优先于唯一索引

四、PRIMARY KEY 约束标识列或列集,这些列或列集的值唯一标识表中的行。

在一个表中,不能有两行包含相同的主键值。不能在主键内的任何列中输入 NULL 值。在数据库中 NULL 是特殊值,代表不同于空白和 0 值的未知值。建议使用一个小的整数列作为主键。每个表都应有一个主键。

一个表中可以有一个以上的列组合,这些组合能唯一标识表中的行,每个组合就是一个候选键。数据库管理员从候选键中选择一个作为主键。例如,在 part_sample 表中,part_nmbrpart_name 都可以是候选键,但是只将 part_nmbr 选作主键。

如果一个外键值没有候选键,则不能插入带该值(NULL 除外)的行。如果尝试删除现有外键指向的行,ON DELETE 子句将控制所采取的操作。ON DELETE 子句有两个选项:

NO ACTION 指定删除因错误而失败。

CASCADE 指定还将删除包含指向已删除行的外键的所有行。

如果尝试更新现有外键指向的候选键值,ON UPDATE 子句将定义所采取的操作。它也支持 NO ACTION 和 CASCADE 选项。

数据库程序设计中的约束、触发器和存储过程

上篇博客中所说的对于表操作的几种限制少分析了触发器。这次从对表设计的角度来着重分析约束和触发器的关系,并进一步扩展比较触发器和存储过程。但在看该篇博客前强烈建议大家好好读下我的上一篇博客《约束与数据库...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2012年08月16日 21:41
  • 9826

触发器和check约束区别

转载自http://blog.csdn.net/cjr15233661143/article/details/7842023 在SQL Server数据库中提供了两种主要机制来强...
  • yuliangliang092
  • yuliangliang092
  • 2016年04月24日 21:52
  • 871

浅谈SQL SEVER中约束和规则的异同

规则和约束是用来对想要限定的表中某些数据操作的操作法则。通俗点就是,允许什么样的数据输入不允许什么样的输入等操作,都受到规则或约束的限定。 约束:强制实行的应用规则,通过限制列中数据,行中数据和表之...
  • zllaptx4869
  • zllaptx4869
  • 2012年07月22日 08:33
  • 1252

mysql使用触发器实现check约束功能

MySQL可以使用check约束,但check约束对数据验证没有任何作用。  create table temp(          id int auto_increment,         ...
  • zhangyunpengchang
  • zhangyunpengchang
  • 2016年03月21日 11:23
  • 2991

触发器解决外键约束问题

触发器是与表事件有关的特殊存储过程。它不能直接被执行,必须为表上的增、删、改事件所触发。外键要比触发器更快,但是我们经常会遇见外键约束的问题,触发器能解决外键不能处理的复杂关系。下面是一个实践的例子:...
  • JYL15732624861
  • JYL15732624861
  • 2016年05月29日 21:41
  • 1405

SQL中的「规则」 constraint 与「约束」 rule 的区别。

前言,学校时学习的东西,好久都没有用到了。 今天看到了rule,第一眼还以为是约束了。 ------------------------------------------------------...
  • sxzlc
  • sxzlc
  • 2012年04月09日 15:52
  • 1788

用触发器实现插入时自动填充默认值为序列

问题来自一个异构数据库之间数据传输的需求: 从POSTGRESQL将数据定期导入到ORACLE数据库 oracle表: SA_SALES_INFO_OVERSEA ( “ID”...
  • mengtianyalll
  • mengtianyalll
  • 2014年02月19日 16:03
  • 1251

SQL数据完整性(约束、规则、默认值)

在日常数据库操作中,当用INSERT,UPDATE,DELETE修改数据库时,经常会破坏数据的完整性,为了保证它的完整性,主要通过四种数据库对象来实现:约束、规则、默认值和触发器。下面来谈谈怎么使用这...
  • cb_fxb
  • cb_fxb
  • 2012年01月20日 14:31
  • 538

SQLServer默认值约束

1. 创建表时指定默认值 create table dbo.t1 ( id1 INT DEFAULT 5 ) 2. 创建表时指定默认值,并指定约束名 create table dbo.t1 ...
  • duanbeibei
  • duanbeibei
  • 2016年06月21日 11:35
  • 4790

sql server 数据库中 触发器和约束的暂停及恢复操作 命令

ALTER TABLE  [stores] NOCHECK CONSTRAINT All --暂停约束 ALTER TABLE  [stores] DISABLE TRIGGER    ALL ...
  • seeseesee
  • seeseesee
  • 2016年01月04日 09:59
  • 1188
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:约束、规则、默认值和触发器
举报原因:
原因补充:

(最多只允许输入30个字)