答:
我是这样作的,尽量使用约束
,如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