Mettre à jour une colonne par rapport aux valeurs d'une autre
1 réponse
Jerome
Bonjour,
Voici la problématique qui m'amène. J'ai une table dans laquelle je dispose
d'une colonne VALEUR1 (date dans un format numérique) renseignée. Une
nouvelle colonne VALEUR2 (date format SQL) a été créée dans la même table et
j'ai besoin de mettre à jour les valeurs de cette nouvelle colonne à partir
des données de la première.
J'ai déjà un déclencheur qui fait cela en appelant la procédure stockée
ci-dessous pour mettre à jour en dynamique la colonne VALEUR2 (à ce niveau
ca fonctionne)
Par contre pour l'initialisation de cette colonne (opération qui bien sur ne
sera faite qu'ne seule fois à l'installation), j'ai besoin de parcourir
toutes les lignes de la table, de prendre chacune des valeurs de VALEUR1, de
les convertir dans la procédure stockée et de mettre le résultat dans la
colonne VALEUR2.
Je partais sur le fait de faire cela via un UPDATE. Je ne sais pas s'il est
possible d'appeler une procédure stockée dans la syntaxe d'un UPDATE (en
tout cas j'ai pas réussi).
Je sèche un peu sur la façon de procéder pour l'initialisation de cette
colonne
Si quelqu'un à une idée sur la façon de régler ce problème....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
bonjour,
Jerome a écrit:
Bonjour,
Voici la problématique qui m'amène. J'ai une table dans laquelle je dispose d'une colonne VALEUR1 (date dans un format numérique) renseignée. Une nouvelle colonne VALEUR2 (date format SQL) a été créée dans la même table et j'ai besoin de mettre à jour les valeurs de cette nouvelle colonne à partir des données de la première.
J'ai déjà un déclencheur qui fait cela en appelant la procédure stockée ci-dessous pour mettre à jour en dynamique la colonne VALEUR2 (à ce niveau ca fonctionne)
Par contre pour l'initialisation de cette colonne (opération qui bien sur ne sera faite qu'ne seule fois à l'installation), j'ai besoin de parcourir toutes les lignes de la table, de prendre chacune des valeurs de VALEUR1, de les convertir dans la procédure stockée et de mettre le résultat dans la colonne VALEUR2.
Je partais sur le fait de faire cela via un UPDATE. Je ne sais pas s'il est possible d'appeler une procédure stockée dans la syntaxe d'un UPDATE (en tout cas j'ai pas réussi).
Je sèche un peu sur la façon de procéder pour l'initialisation de cette colonne
Si quelqu'un à une idée sur la façon de régler ce problème....
on ne peut pas utiliser une procédure dans une requête. On peut en revanche utiliser une UDF (fonction SQL). Pourquoi d'ailleurs avoir utiliser une procédure dans votre trigger ??? C'est absurde, d'autant plus qu'un trigger n'est déclenché qu'une seule fois même si le UPDATE concerne cent millions de lignes !
Merci en tout cas pour votre aide
Jerome
A lire sur les triggers SQL Server : http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L5 A lire sur les UDF : http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L3
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
bonjour,
Jerome a écrit:
Bonjour,
Voici la problématique qui m'amène. J'ai une table dans laquelle je dispose
d'une colonne VALEUR1 (date dans un format numérique) renseignée. Une
nouvelle colonne VALEUR2 (date format SQL) a été créée dans la même table et
j'ai besoin de mettre à jour les valeurs de cette nouvelle colonne à partir
des données de la première.
J'ai déjà un déclencheur qui fait cela en appelant la procédure stockée
ci-dessous pour mettre à jour en dynamique la colonne VALEUR2 (à ce niveau
ca fonctionne)
Par contre pour l'initialisation de cette colonne (opération qui bien sur ne
sera faite qu'ne seule fois à l'installation), j'ai besoin de parcourir
toutes les lignes de la table, de prendre chacune des valeurs de VALEUR1, de
les convertir dans la procédure stockée et de mettre le résultat dans la
colonne VALEUR2.
Je partais sur le fait de faire cela via un UPDATE. Je ne sais pas s'il est
possible d'appeler une procédure stockée dans la syntaxe d'un UPDATE (en
tout cas j'ai pas réussi).
Je sèche un peu sur la façon de procéder pour l'initialisation de cette
colonne
Si quelqu'un à une idée sur la façon de régler ce problème....
on ne peut pas utiliser une procédure dans une requête. On peut en revanche
utiliser une UDF (fonction SQL). Pourquoi d'ailleurs avoir utiliser une
procédure dans votre trigger ??? C'est absurde, d'autant plus qu'un trigger
n'est déclenché qu'une seule fois même si le UPDATE concerne cent millions de
lignes !
Merci en tout cas pour votre aide
Jerome
A lire sur les triggers SQL Server :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L5
A lire sur les UDF :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L3
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Voici la problématique qui m'amène. J'ai une table dans laquelle je dispose d'une colonne VALEUR1 (date dans un format numérique) renseignée. Une nouvelle colonne VALEUR2 (date format SQL) a été créée dans la même table et j'ai besoin de mettre à jour les valeurs de cette nouvelle colonne à partir des données de la première.
J'ai déjà un déclencheur qui fait cela en appelant la procédure stockée ci-dessous pour mettre à jour en dynamique la colonne VALEUR2 (à ce niveau ca fonctionne)
Par contre pour l'initialisation de cette colonne (opération qui bien sur ne sera faite qu'ne seule fois à l'installation), j'ai besoin de parcourir toutes les lignes de la table, de prendre chacune des valeurs de VALEUR1, de les convertir dans la procédure stockée et de mettre le résultat dans la colonne VALEUR2.
Je partais sur le fait de faire cela via un UPDATE. Je ne sais pas s'il est possible d'appeler une procédure stockée dans la syntaxe d'un UPDATE (en tout cas j'ai pas réussi).
Je sèche un peu sur la façon de procéder pour l'initialisation de cette colonne
Si quelqu'un à une idée sur la façon de régler ce problème....
on ne peut pas utiliser une procédure dans une requête. On peut en revanche utiliser une UDF (fonction SQL). Pourquoi d'ailleurs avoir utiliser une procédure dans votre trigger ??? C'est absurde, d'autant plus qu'un trigger n'est déclenché qu'une seule fois même si le UPDATE concerne cent millions de lignes !
Merci en tout cas pour votre aide
Jerome
A lire sur les triggers SQL Server : http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L5 A lire sur les UDF : http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L3
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************