Groups | Blog | Home
all groups > sql server (alternate) > august 2006 >

sql server (alternate) : Understanding constraints and binding


Erland Sommarskog
8/7/2006 12:00:00 AM
Nacho (nacho.jorge@gmail.com) writes:
[quoted text, click to view]

You would need a trigger:

CREATE TRIGGER tri ON tbl FOR INSERT, UPDATE AS
UPDATE tbl
SET col = CASE WHEN t.col < 0 THEN 0
WHEN t.col > 10000 THEN 0
ELSE t.col
END
FROM tbl t
JOIN inserted i ON t.keycol = i.keycol

If you have a constraint, you would have to drop that constraint. Or
implement an INSTEAD OF trigger instead.

I would question the wise in destroying data in this way, though. Better
would be to accept the data as-is, and then handle it in the query.


--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
Nacho
8/7/2006 1:20:01 AM
I'm implementing some database formatting and I need that values within
a column have certain limits ... let's say for example, they shouldn't
be <0 or >10000, but in the case I'm inserting values bigger then 10000
I would like that MSSQL "clip" this value to the upper limit (10000 in
this case) and the same with the lower limit (zero in this case).
Is that possible? or SQL just respond me with an error when the values
go beyond those limits and will abort the transaction?
Can someone put some light on this please???

Nacho
Nacho
8/7/2006 10:25:21 AM
Thanks to both of you!!!
It's good point to handle it in the query (I suposse when you read
values after) but then, how it would be? How can I clip values in the
select statement ?



[quoted text, click to view]
Roy Harvey
8/7/2006 12:38:54 PM
I would only add that a WHERE clause on the UPDATE in the trigger
would save updates when the value is already within the range:

WHERE t.col < 0 OR T.col > 10000

Roy Harvey
Beacon Falls, CT

On Mon, 7 Aug 2006 11:06:31 +0000 (UTC), Erland Sommarskog
[quoted text, click to view]
Erland Sommarskog
8/7/2006 1:27:36 PM
Roy Harvey (roy_harvey@snet.net) writes:
[quoted text, click to view]


Good point! Thanks, Roy!


--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
Erland Sommarskog
8/7/2006 10:08:14 PM
Nacho (nacho.jorge@gmail.com) writes:
[quoted text, click to view]

With a CASE expression very similar to the one I had in my
UPDATE statement in my sample trigger.


--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
AddThis Social Bookmark Button