Rules (Transact-SQL)[1] are reusable what permitted to overcome the shortcoming of non-re-usability of check constraints.
And now I read [1] that:
If you're concern is you want to write the "code" to constrain once and re-use it on multiple columns, I suggest you do the following:
Create a function with your constraint rules:
CREATE FUNCTION schema.PositiveInteger(INT val)
RETURNS INT AS
BEGIN
IF (val > 0) RETURN 1
ELSE RETURN 0
END
Add that function as a constraint to the column:
ALTER TABLE tbl ADD CONSTRAINT chkMyRules CHECK (schema.PositiveInteger(tbl.IntColumn) = 1);
The best part about this is, you can now write re-usable rules that take into account multiple columns.
CREATE FUNCTION ... (INT val, DATETIME date) RETURNS INT AS ......
ALTER TABLE tbl ADD CONSTRAINT chkMultipleCols CHECK (func(col1, col2) = 1);
Enjoy!