维护数据库的完整性和一致性,你喜欢用触发器仍是自写业务逻辑?为何?

答:
我是这样作的,尽量使用约束,如check,主键,外键,非空字段等来约束,这样作效率最高,也最方便。其次是使用触发器,这种方法能够保证,不管什么业务系统访问数据库均可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样作麻烦,编程复杂,效率低下。html

数据库完整性:存储在数据库中的全部数据值均正确的状态。若是数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性数据库

数据库一致性(Database Consistency)是指事务执行的结果必须是使数据库从一个一致性状态变到另外一个一致性状态。保证数据库一致性是指当事务完成时,必须使全部数据都具备一致的状态。在关系型数据库中,全部的规则必须应用到事务的修改上,以便维护全部数据的完整性。编程

SQL CHECK 约束code

 Check约束经过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。在列中更新数据时,所要输入的内容必须知足Check约束的条件,不然将没法正确输入。htm

/*CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数*/
Id_P int NOT NULL CHECK (Id_P>0),

多个blog

CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

新增事务

ADD CHECK (Id_P>0)
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

撤销get

DROP CONSTRAINT chk_Person

Unique约束博客

惟一约束确保表中的一列数据没有相同的值。与主键约束相似,惟一约束也强制惟一性,但惟一约束用于非主键的一列或者多列的组合,且一个表能够定义多个惟一约束。it

Id-P int NOT NULL UNIQUE

多个

City varchar(255),CONSTRAINT uc-PersonID UNIQUE (Id-P,LastName)

新增

ADD UNIQUE (Id-P)

多个

ADD CONSTRAINT uc-PersonID UNIQUE (Id-P,LastName)

撤销

DROP CONSTRAINT uc-PersonID

Foreign Key约束

外键约束是用来增强两个表(主表和从表)的一列或多列数据之间的链接的。建立外键约束的顺序是先定义主表的主键,而后定义从表的外键。也就是说只有主表的主键才能被从表用来做为外键使用(即,一个表中的 FOREIGN KEY 指向另外一个表中的 PRIMARY KEY),被约束的从表中的列能够不是主键,主表限制了从表更新和插入的操做。

Id_P int FOREIGN KEY REFERENCES Persons(Id_P)

多个

CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

新增

ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

撤销

DROP CONSTRAINT fk_PerOrders

primary Key约束

    在表中常有一列或多列的组合,其值能惟一标识表中的每一行。
这样的一列或多列成为表的主键(PrimaryKey)。一个表只能有一个主键,并且主键约束中的列不能为空值。只有主键列才能被做为其余表的外键所建立。

Id_P int NOT NULL PRIMARY KEY

多个

CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)

新增

ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)

删除

DROP CONSTRAINT pk_PersonID

Default约束

若在表中定义了默认值约束,用户在插入新的数据行时,若是该行没有指定数据,那么系统将默认值赋给该列,若是咱们不设置默认值,系统默认为NULL

City varchar(255) DEFAULT 'Sandnes'

插入系统值

OrderDate date DEFAULT GETDATE()

新增

ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'SANDNES'

删除

ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT

有关触发器的知识请参考:SqlServer基础之(触发器) - 阿赫瓦里 - 博客园

相关文章
相关标签/搜索