Best would be a CHECK constraint if that is possible. You wouldn't have to write the code and SQL would guarantee that it gets run and works without error (given, of course, that you've coded the CHECK correctly). If the values don't pass the CHECK, SQL itself will kill the INSERT (and UPDATE too, if you want; if you use triggers, you'd have to write separate trigger for UPDATE along with the one for INSTEAD OF INSERT).
SQL DBA,SQL Server MVP(07, 08, 09) Prosecutor James Blackburn, in closing argument in the Fatal Vision murders trial: "If in the future, you should cry a tear, cry one for them [the murder victims]. If in the future, you should say a prayer, say one for them. And if in the future, you should light a candle, light one for them."