Read Prev Article: A backward compatibility feature ‘RULE’ in SQL Server
RULES are constraint that bound to either column or User defined data
type, they restrict the data entry to follow certain condition. They are quite
different from Constraint which we will discuss in next series of article.
In previous article we saw, how we can create rule on Table Column,
in this post we will see how we can create RULE on User Defined Data Type
Creating User Defined
Data Type
create type phoone_number_type from
varchar(13) not null
go
Creating Table using User
Defined Data Type
create table PersonContacts
(pid int identity(1,1),
name varchar(10),
phone_number phoone_number_type)
Creating RULE
create rule phone_no_constraint
as
len(@phone) = 13 and
substring(@phone,3,1) = '-' and
isnumeric( left(@phone,2)) =1 and
isnumeric(right(@phone,10)) =1
Command(s)
completed successfully.
Binding Rule to the
column
exec sp_bindrule 'phone_no_constraint', 'phoone_number_type'
Rule
bound to table column.
Now since Rules are bind to the column, lets try to insert
value to the table. Here we have rule for Phone number is ’XX-XXXXXXXXX’ and X
is integer type. Lets try to insert record against to Rule defined to Phone
number and see what will be the result of insert.
insert into PersonContacts values('Neha','9820663556')
Msg 513, Level 16, State 0, Line 1
A column insert or update conflicts with
a rule imposed by a previous CREATE RULE statement. The statement was
terminated. The conflict occurred in database 'MyTest', table
'dbo.PersonContacts', column 'phone_number'.
The statement has been terminated.
An attempt to insert phone number not following Rules does
not allow to insert record to the table.
Lets insert a proper record in the table.
insert into PersonContacts values('Lopa','91-9099956156')
(1
row(s) affected)
Let’s query the table to conform insertion.
select * from PersonContacts
pid
name phone_number
----------- ---------- -------------
4
Lopa 91-9099956156
Unbind RULE
exec sp_unbindrule 'phoone_number_type'
Rule
unbound from table column.
Drop Rule
drop rule phone_no_constraint
Command(s)
completed successfully.
My enjoyment is my code, but u r taking
over my space J
Post Reference: Vikram Aristocratic Elfin Share