|
Posted by Erland Sommarskog on 09/18/06 21:57
imani_technology_spam@yahoo.com (imani_technology_spam@yahoo.com) writes:
> Thank you for the response. Please bear in mind that the LabID is the
> identifiable key; it is the PK for the table.
In such case you cannot use an AFTER trigger. A primary key cannot be NULL,
so it must have a value when you insert the data. Furthermore, if there is
no other data to correlate, it's impossible to handle multi-row inserts.
And a trigger that would reqiure rows to be inserted one at a time, is
completely indefensible. This could have serious impact the day you
need to insert many rows.
> Also, I don't understand why LabID = @curyear + @curmax + i.newlabid
> instead of @curyear + (@curmax + 1).
If you insert 10 rows at the time, you cannot give them all the same
ID, can you?
> Finally, could you please explain to me why the UNION statements are
> necessary?
I wanted to test that the trigger actually works with multi-row inserts.
SELECT UNION is a way to achieve that without using a table to select
from.
I think it's possible to do this with INSTEAD OF trigger, but then I
need to know which version of SQL Server you are using.
--
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
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
Navigation:
[Reply to this message]
|