Bonjour,

J'ai une table qui a été créée avec ce script :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE [infocentre].[contacts](
	[statut] [tinyint] not null,
	[nom] [nvarchar](80) NOT NULL,
	[prenom] [nvarchar](40) NULL,
	[email] [nvarchar](80) NULL,
	[telephone] [nvarchar](40) NULL,
	[mobile] [nvarchar](40) NULL,
	[datemodif] date NOT NULL,
	[codeclient] [nvarchar](80) NOT NULL,
	[codecrm] [bigint] NOT NULL,
	[id_contactcrm] [numeric](27, 0) NOT NULL,
	primary key (statut, id_contactcrm, codeclient)
) ON [PRIMARY]
 
GO

Dedans, j'ai 8 millions de lignes.
Statut contient les valeurs de 1 à 8, réparties de manière homogène (c'est l'historique glissant du contenu d'une table, statut indiquant l'âge de l'historique).

Suite à un problème d'interface, j'ai besoin de revenir en arrière.

Je lance donc cette commande :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
update infocentre.activites set statut = statut - 3;

Ca tourne un moment, et me dit que ça a mis à jour 8 millions de lignes.

Je lance ensuite :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
delete infocentre.activites where statut <= 3;
=> 0 lignes lises à jour ! WTF!?

Je lance pour vérifier :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
select distinct statut from infocentre.activites;
Et au lieu d'avoir :
-2
-1
0
1
2
3
4
5

J'ai toujours les valeurs de 1 à 8...

Je veux bien que tinyint soit éventuellement unsigned, mais à ce moment :
- soit ça aurait du planter
- soit repartir à 2^16 à la place des valeurs négative

Pourtant, je n'ai pas eu le moindre message d'erreur... Comment se fait-ce ?

Bon, je m'en suis sorti en faisant :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
delete infocentre.activites where statut <= 3;
 
update infocentre.activites set statut = statut - 3;
select distinct statut from infocentre.activites;

Mais j'aimerais quand même comprendre ce qui c'est passé avec mon premier update ???