使用CHECK约束执行业务规则
2008-12-31 10:16:59 来源:WEB开发网核心提示: 图一尝试把值插入到SALARY字段超出了我们定义的范围,这也被我们的数据库引擎成功捕捉到了,使用CHECK约束执行业务规则(2),INSERT INTO DBO.EMPLOYEE (FIRSTNAME, LASTNAME, SALARY)SELECT 'GEORGE', &
图一
尝试把值插入到SALARY字段超出了我们定义的范围,这也被我们的数据库引擎成功捕捉到了。
INSERT INTO DBO.EMPLOYEE (FIRSTNAME, LASTNAME, SALARY)
SELECT 'GEORGE', 'WASHINGTON', 110000
GO
图二
到目前为止这些都进展得很顺利。但是,这里还有另外一个公司规则需要我们来执行。我们公司的管理人员可以赚取任何奖金比例但是他们是唯一被允许赚取他们工资5%或者更高比例奖金的员工。非管理人员只能赚取低于5%的任何比例奖金。让我们来试着通过一个表级别的CHECK约束来执行这个公司规则:
ALTER TABLE DBO.EMPLOYEE
ADD CONSTRAINT CK_EMPLOYEE_BONUSPCT
CHECK (IS_MANAGER = 1 AND BONUSPCT >= 5.00)
GO
INSERT INTO DBO.EMPLOYEE (FIRSTNAME, LASTNAME, IS_MANAGER, SALARY, BONUSPCT)
SELECT 'GEORGE', 'WASHINGTON', 1, 100000, 5.00
GO
INSERT INTO DBO.EMPLOYEE (FIRSTNAME, LASTNAME, IS_MANAGER, SALARY, BONUSPCT)
SELECT 'BEN', 'FRANKLIN', 0, 75000, 2.50
GO
图三
更多精彩
赞助商链接