Je crois me souvenir que lorsqu'une ligne d'une table est mise à jour, SQL Server supprime d'abord la ligne, puis la rajoute, avec la même valeur d'identité pour une colonne, si une telle colonne existe. Quelqu'un peut-il le confirmer ?
Réponse
Trop de publicités?Faux. Dans la plupart des cas, les données sont modifiées sur place, dans la même page. Avec SQL Server 2008, vous pouvez en fait interroger l'endroit où les données résident sur le disque, ce qui vous le révélera.
Après l'avoir regardé maintenant, je retire tout ce que j'ai dit :
http://www.sqlskills.com/BLOGS/PAUL/category/On-Disk-Structures.aspx
Ceci peut être facilement testé sur SQL Server 2008. (code modifié à partir de l'article lié)
CREATE TABLE test (c1 INT, c2 VARCHAR (2000));
GO
CREATE CLUSTERED INDEX test_cl ON test (c1);
GO
CHECKPOINT;
GO
INSERT INTO test VALUES (1, REPLICATE ('Paul', 500));
GO
CHECKPOINT;
select %%physloc%%, * from test -- 0x3E01000001000000
GO
UPDATE test SET c1 = 2 WHERE c1 =1;
GO
select %%physloc%%, * from test -- 0x3E01000001000100
^
|
notice it has changed location