Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplacement dans table

8 réponses
Avatar
Guillaume
Bonjour,

je cherche à remplacer dans certain champs dans une table.
j'ai une table S4T_ELMT avec une colonne TYPE_ELMT_REF.

je veux dans cette colonne remplacer les valeurs 18 19 et 22 (et
d'autres) par 113.

Et cherchant un peu sur le net (vu que je pige pas grand chose en sql,
je suis plus branché systèmes) j'ai peu être un point de départ mais je
cale pour la suite

UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF = 18

et je la relance avec chaque valeur en 3° ligne

Je n'ose pas lancer la formule par peur que ma base de données ne se
foute de ma geule pendant 2 décénies.

Si quelqu'un peux jouer le docteur...

Guillaume

8 réponses

Avatar
Guillaume
Guillaume a présenté l'énoncé suivant :
Bonjour,

je cherche à remplacer dans certain champs dans une table.
j'ai une table S4T_ELMT avec une colonne TYPE_ELMT_REF.

je veux dans cette colonne remplacer les valeurs 18 19 et 22 (et d'autres)
par 113.

Et cherchant un peu sur le net (vu que je pige pas grand chose en sql, je
suis plus branché systèmes) j'ai peu être un point de départ mais je cale
pour la suite

UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF = 18

et je la relance avec chaque valeur en 3° ligne

Je n'ose pas lancer la formule par peur que ma base de données ne se foute de
ma geule pendant 2 décénies.

Si quelqu'un peux jouer le docteur...

Guillaume



Bon j'ai quand même lancé la comma de sur un base de test et évidement
je me suis prit un gros rateau

Msg 30002, Level 16, State 1, Procedure ti_s4an_lock_connect, Line 61
Code de "S4T_CONNECT" inconnu. Creation de "S4AN_LOC_CONNECT"
interdite.
Msg 3609, Level 16, State 1, Procedure S4I_LOCK, Line 30
The transaction ended in the trigger. The batch has been aborted.
Avatar
Gloops
Guillaume a écrit, le 27/04/2009 10:55 :
Bon j'ai quand même lancé la comma de sur un base de test et évid ement
je me suis prit un gros rateau

Msg 30002, Level 16, State 1, Procedure ti_s4an_lock_connect, Line 61
Code de "S4T_CONNECT" inconnu. Creation de "S4AN_LOC_CONNECT" interdite .
Msg 3609, Level 16, State 1, Procedure S4I_LOCK, Line 30
The transaction ended in the trigger. The batch has been aborted.





Bonjour,

Ta requête m'avait l'air correcte, regarde bien où (à part tes dent s :)
) va le manche du rateau : création interdite. Il semble y avoir un
problème de droits.

Puisque tu nous cites deux messages d'erreurs se référant respectivem ent
à la ligne 61 et à la ligne 30 de ta requête, ça pourrait aider d e
savoir ce qu'il y a sur ces deux lignes. Double-cliquer sur chaque
message d'erreur peut aider à visualiser le code.


Pour effectuer le changement en une fois j'aurais proposé :
UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF IN (18, 19, 22)

Il faut bien sûr s'assurer de disposer d'une table S4T_ELMT contenant u n
champ numérique TYPE_ELMT_REF, et sur laquelle on dispose des droits
d'écriture.
Avatar
Guillaume
Gloops a formulé la demande :
Guillaume a écrit, le 27/04/2009 10:55 :
Bon j'ai quand même lancé la comma de sur un base de test et évidement je
me suis prit un gros rateau

Msg 30002, Level 16, State 1, Procedure ti_s4an_lock_connect, Line 61
Code de "S4T_CONNECT" inconnu. Creation de "S4AN_LOC_CONNECT" interdite.
Msg 3609, Level 16, State 1, Procedure S4I_LOCK, Line 30
The transaction ended in the trigger. The batch has been aborted.





Bonjour,

Ta requête m'avait l'air correcte, regarde bien où (à part tes dents :) ) va
le manche du rateau : création interdite. Il semble y avoir un problème de
droits.

Puisque tu nous cites deux messages d'erreurs se référant respectivement à la
ligne 61 et à la ligne 30 de ta requête, ça pourrait aider de savoir ce qu'il
y a sur ces deux lignes. Double-cliquer sur chaque message d'erreur peut
aider à visualiser le code.


Pour effectuer le changement en une fois j'aurais proposé :
UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF IN (18, 19, 22)

Il faut bien sûr s'assurer de disposer d'une table S4T_ELMT contenant un
champ numérique TYPE_ELMT_REF, et sur laquelle on dispose des droits
d'écriture.



merci pour ta réponse.

mon utilisateur est db_owner sur cette base
la table est bien S4T_ELMT
et dans columns j'ai bien TYPE_ELMT_REF mais avec entre parenthese (FK,
int, not null)
Ca fait avancer le smilblik?

Je ne peux pas cliquer les les messages d'erreurs, ce ne sont pas des
liens :-(
Avatar
Guillaume
Guillaume vient de nous annoncer :
Gloops a formulé la demande :
Guillaume a écrit, le 27/04/2009 10:55 :
Bon j'ai quand même lancé la comma de sur un base de test et évidement je
me suis prit un gros rateau

Msg 30002, Level 16, State 1, Procedure ti_s4an_lock_connect, Line 61
Code de "S4T_CONNECT" inconnu. Creation de "S4AN_LOC_CONNECT" interdite.
Msg 3609, Level 16, State 1, Procedure S4I_LOCK, Line 30
The transaction ended in the trigger. The batch has been aborted.





Bonjour,

Ta requête m'avait l'air correcte, regarde bien où (à part tes dents :) )
va le manche du rateau : création interdite. Il semble y avoir un problème
de droits.

Puisque tu nous cites deux messages d'erreurs se référant respectivement à
la ligne 61 et à la ligne 30 de ta requête, ça pourrait aider de savoir ce
qu'il y a sur ces deux lignes. Double-cliquer sur chaque message d'erreur
peut aider à visualiser le code.


Pour effectuer le changement en une fois j'aurais proposé :
UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF IN (18, 19, 22)

Il faut bien sûr s'assurer de disposer d'une table S4T_ELMT contenant un
champ numérique TYPE_ELMT_REF, et sur laquelle on dispose des droits
d'écriture.



merci pour ta réponse.

mon utilisateur est db_owner sur cette base
la table est bien S4T_ELMT
et dans columns j'ai bien TYPE_ELMT_REF mais avec entre parenthese (FK, int,
not null)
Ca fait avancer le smilblik?

Je ne peux pas cliquer les les messages d'erreurs, ce ne sont pas des liens
:-(



De plus quand j'essaie de changer une valeur directement dans la table
j'ai une erreur:

No row was updated.

The data in row 1 was not commited.
Error Source: .Net SqlClient Data Provider.
Error Message: Code de "S4T_CONNECT" inconnu. Creation de
"S4AN_LOC_CONNECT" interdite.
The transaction ended in the trigger. The batch has been aborted.

Correct the errors and retry or pres ESC to cancel the change(s).
Avatar
Guillaume
Guillaume a exprimé avec précision :
Guillaume vient de nous annoncer :
Gloops a formulé la demande :
Guillaume a écrit, le 27/04/2009 10:55 :
Bon j'ai quand même lancé la comma de sur un base de test et évidement je
me suis prit un gros rateau

Msg 30002, Level 16, State 1, Procedure ti_s4an_lock_connect, Line 61
Code de "S4T_CONNECT" inconnu. Creation de "S4AN_LOC_CONNECT" interdite.
Msg 3609, Level 16, State 1, Procedure S4I_LOCK, Line 30
The transaction ended in the trigger. The batch has been aborted.





Bonjour,

Ta requête m'avait l'air correcte, regarde bien où (à part tes dents :) )
va le manche du rateau : création interdite. Il semble y avoir un problème
de droits.

Puisque tu nous cites deux messages d'erreurs se référant respectivement à
la ligne 61 et à la ligne 30 de ta requête, ça pourrait aider de savoir ce
qu'il y a sur ces deux lignes. Double-cliquer sur chaque message d'erreur
peut aider à visualiser le code.


Pour effectuer le changement en une fois j'aurais proposé :
UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF IN (18, 19, 22)

Il faut bien sûr s'assurer de disposer d'une table S4T_ELMT contenant un
champ numérique TYPE_ELMT_REF, et sur laquelle on dispose des droits
d'écriture.



merci pour ta réponse.

mon utilisateur est db_owner sur cette base
la table est bien S4T_ELMT
et dans columns j'ai bien TYPE_ELMT_REF mais avec entre parenthese (FK,
int, not null)
Ca fait avancer le smilblik?

Je ne peux pas cliquer les les messages d'erreurs, ce ne sont pas des liens
:-(



De plus quand j'essaie de changer une valeur directement dans la table j'ai
une erreur:

No row was updated.

The data in row 1 was not commited.
Error Source: .Net SqlClient Data Provider.
Error Message: Code de "S4T_CONNECT" inconnu. Creation de "S4AN_LOC_CONNECT"
interdite.
The transaction ended in the trigger. The batch has been aborted.

Correct the errors and retry or pres ESC to cancel the change(s).



le pb ne viendrait-il pas du type de données dans la colonne. int?
Avatar
Fred BROUARD
Regardez s'il n'y a pas un trigger sur cette table. Si c'est le cas,
c'est lui qui vous empêche de faire cette mise à jour.
Certains éditeurs comme SAGE mettent en place de tels triggers pour
empêcher toute modification passant directement dans la table. En effet
en comptabilité par exemple l'update peut porter SIMAULTANÉMENT sur
plusieurs table et le faire sur une seule déséquilibrerait la comptra.

A +

Guillaume a écrit :
Bonjour,

je cherche à remplacer dans certain champs dans une table.
j'ai une table S4T_ELMT avec une colonne TYPE_ELMT_REF.

je veux dans cette colonne remplacer les valeurs 18 19 et 22 (et
d'autres) par 113.

Et cherchant un peu sur le net (vu que je pige pas grand chose en sql,
je suis plus branché systèmes) j'ai peu être un point de départ mais je
cale pour la suite

UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF = 18

et je la relance avec chaque valeur en 3° ligne

Je n'ose pas lancer la formule par peur que ma base de données ne se
foute de ma geule pendant 2 décénies.

Si quelqu'un peux jouer le docteur...

Guillaume






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
Avatar
Guillaume
comment on voir les triggers?


Fred BROUARD vient de nous annoncer :
Regardez s'il n'y a pas un trigger sur cette table. Si c'est le cas, c'est
lui qui vous empêche de faire cette mise à jour.
Certains éditeurs comme SAGE mettent en place de tels triggers pour empêcher
toute modification passant directement dans la table. En effet en
comptabilité par exemple l'update peut porter SIMAULTANÉMENT sur plusieurs
table et le faire sur une seule déséquilibrerait la comptra.

A +

Guillaume a écrit :
Bonjour,

je cherche à remplacer dans certain champs dans une table.
j'ai une table S4T_ELMT avec une colonne TYPE_ELMT_REF.

je veux dans cette colonne remplacer les valeurs 18 19 et 22 (et d'autres)
par 113.

Et cherchant un peu sur le net (vu que je pige pas grand chose en sql, je
suis plus branché systèmes) j'ai peu être un point de départ mais je cale
pour la suite

UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF = 18

et je la relance avec chaque valeur en 3° ligne

Je n'ose pas lancer la formule par peur que ma base de données ne se foute
de ma geule pendant 2 décénies.

Si quelqu'un peux jouer le docteur...

Guillaume






Avatar
Guillaume
Guillaume a exposé le 27/04/2009 :
comment on voir les triggers?


Fred BROUARD vient de nous annoncer :
Regardez s'il n'y a pas un trigger sur cette table. Si c'est le cas, c'est
lui qui vous empêche de faire cette mise à jour.
Certains éditeurs comme SAGE mettent en place de tels triggers pour
empêcher toute modification passant directement dans la table. En effet en
comptabilité par exemple l'update peut porter SIMAULTANÉMENT sur plusieurs
table et le faire sur une seule déséquilibrerait la comptra.

A +

Guillaume a écrit :
Bonjour,

je cherche à remplacer dans certain champs dans une table.
j'ai une table S4T_ELMT avec une colonne TYPE_ELMT_REF.

je veux dans cette colonne remplacer les valeurs 18 19 et 22 (et d'autres)
par 113.

Et cherchant un peu sur le net (vu que je pige pas grand chose en sql, je
suis plus branché systèmes) j'ai peu être un point de départ mais je cale
pour la suite

UPDATE S4T_ELMT
SET TYPE_ELMT_REF = 113
WHERE TYPE_ELMT_REF = 18

et je la relance avec chaque valeur en 3° ligne

Je n'ose pas lancer la formule par peur que ma base de données ne se foute
de ma geule pendant 2 décénies.

Si quelqu'un peux jouer le docteur...

Guillaume








J'ai supprimer le trigger pour tester.
J'ai du mal à comprendre son role

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER Trigger [dbo].[TG_ELMT_LOCK] On [dbo].[S4T_ELMT]
For Insert, Update, Delete As
begin
declare
@ElmtRef int,
@designation char(50),
@Parc int
Declare Cur_Inserted Cursor For (Select ELMT_REF, ELMT_DESIGNATION,
ELMT_PARC from inserted )
Open Cur_Inserted
Fetch Cur_Inserted Into @ElmtRef, @designation, @Parc
While @@FETCH_STATUS = 0
Begin
Exec S4I_LOCK 1, @ElmtRef, @designation, @Parc, 1
Fetch Cur_Inserted Into @ElmtRef, @designation, @Parc
end
Close Cur_Inserted
Deallocate Cur_Inserted
Declare Cur_Deleted Cursor For (Select ELMT_REF, ELMT_DESIGNATION,
ELMT_PARC from deleted
WHERE Elmt_ref NOT IN (SELECT ELMT_REF from inserted))
Open Cur_Deleted
Fetch Cur_Deleted Into @ElmtRef, @designation, @Parc
While @@FETCH_STATUS = 0
Begin
Exec S4I_LOCK 1, @ElmtRef, @designation, @Parc, 2
Fetch Cur_Deleted Into @ElmtRef, @designation, @Parc
end
Close Cur_Deleted
Deallocate Cur_Deleted
end