867
Chapter 35: Row-Level Security
35
EXEC pSecurity_Assign
@PersonCode = '118',
@AddressCode = '5',
@SecurityLevel = 5;Result:Server: Msg 547, Level 16, State 1,
Procedure pSecurity_Assign, Line 35
INSERT statement conflicted with COLUMN CHECK constraint
'ValidSecurityCode'. The conflict occurred in database
'AdventureWorks2012', table 'Security', column 'SecurityLevel'.
The statement has been terminated.
Testing the employees-only complex-business-rule trigger:SELECT BusinessEntityID
FROM Person.Person
WHERE PersonType NOT IN ('EM','SP')EXEC pSecurity_Assign
@PersonCode = '291',
@AddressCode = '3',
@SecurityLevel = 3;Result:Foreign Key Constraint: Security.PersonIDThe next execution of the stored procedure tests the person foreign-key constraint and
generates an error because 99999 is an invalid contact.EXEC pSecurity_Assign
@PersonCode = '99999',
@AddressCode = '1',
@SecurityLevel = 3;Result:Server: Msg 50000, Level 15, State 1, Procedure pSecurity_Assign, Line 19
Person: '99999' not foundTesting the location-code foreign-key constraint, it’s also checked within the stored
procedure:EXEC pSecurity_Assign
@PersonCode = '118',
@AddressCode = '99999',
@SecurityLevel = 3;Result:c35.indd 867c35.indd 867 7/31/2012 9:59:40 AM7/31/2012 9:59:40 AM
http://www.it-ebooks.info