Ik ben met een data-tier generator bezig (C# classes + SQL Server stored procs) en voor het genereren van de UPDATE stored procedures stuit ik nu op een probleem: moet ik UPDATE stored procedures genereren die ook primary key fields updaten? Ikzelf vind het updaten van primary key fields niet correct, daar je dan semantisch een ander record krijgt (immers, de primary key fields identificeren het record), maar wellicht denken anderen daar anders over en hebben deze personen argumenten om wel primary key fields te updaten.
Het gaat met name om dit soort dingen:
table1 met 2 fields, Field1 en Field2. Dit zijn foreign keys in resp. table2 en table3 en tezamen vormen ze de primary key in table1. Een updatequery hiervoor zou uitkomen op:
Maar eigenlijk is dit semantisch een verkapte DELETE + een INSERT van een nieuw record.
Iemand een doordachte motivatie waarom het updaten van primary key fields wel een goede zaak is?
Het gaat met name om dit soort dingen:
table1 met 2 fields, Field1 en Field2. Dit zijn foreign keys in resp. table2 en table3 en tezamen vormen ze de primary key in table1. Een updatequery hiervoor zou uitkomen op:
code:
1
2
3
4
5
6
7
8
9
10
11
| CREATE PROCEDURE [sp_Table1_update]
@OldField1 type,
@NewField1 type,
@OldField2 type,
@NewField2 type
AS
UPDATE Table1
SET Field1 = @NewField1,
Field2 = @NewField2
WHERE
Field1=@OldField1 AND Field2 = @OldField2 |
Maar eigenlijk is dit semantisch een verkapte DELETE + een INSERT van een nieuw record.
Iemand een doordachte motivatie waarom het updaten van primary key fields wel een goede zaak is?