IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Modifier uniquement la dernière ligne d'une table


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 3
    Par défaut Modifier uniquement la dernière ligne d'une table
    Bonjour, j'ai besoin de créer un déclencheur qui me modifie uniquement la dernière ligne, le problème que j'ai c'est qu'il passe toutes les lignes avant de modifier la dernière, ce qui mange les ressources du PC ( y a plus de 200000 lignes dans le meilleurs des cas)

    Voila ce que j'ai mis en place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE       top (1) BOOKINGS
    SET                BOOKDATE = BOOKDATE + 10000000
    WHERE        (BOOKDATE < 19500101) 
    and REC_NR in (select top(1) REC_NR from BOOKINGS order by REC_NR desc)

    y a-t-il un moyen qu'il fasse directement la dernière sans passer par celle d'avant?
    Merci d'avance de votre aide
    Pascal

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    La notion de première ou dernière ligne d'une table n'existe pas dans les SGBDR. Vous approche n'a aucun sens ! Les lignes étant "rangés" dans n'importe quel ordre au gré du moteur SQL qui fait ce qu'il lui plait !
    À lire : https://sqlpro.developpez.com/cours/sqlaz/erreurs/#L5
    Expliquez plus en détail le fonctionnel de votre demande et non pas la technique….

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 3
    Par défaut
    Ok merci, par contre en ayant la dernière entrée via la clé, y a t'il moyen de modifier que cette entrée sans passer par les autres avants?
    je m'explique : j'ai une table ou les données remontent continuellement, le problème c'est que l'une de ces données n'est pas bonnes (la date remonte à 1920 au lieu de 2020) je dois donc changer à chaque fois cette date. Le problème c'est que lorsque je fais un update il vérifie la base depuis le début ce qui prend au minimum 1 mn 30 par Mise à jour, je dois donc trouver un moyen de faire ce changement en live sans prendre tout ce temps

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Dans ce cas utilisez un déclencheur de type INSERT qui va prendre en compte uniquement les nouvelles valeurs anormales et les rectifier….
    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TRIGGER E_I_BOOKINGS
    ON BOOKINGS
    FOR INSERT
    AS
    SET NOCOUNT ON;
    UPDATE BOOKINGS
    SET    BOOKDATE = DATEADD(year, 100, BOOKDATE)
    WHERE  REC_NR IN (SELECT REC_NR
                      FROM   inserted
                      WHERE  BOOKDATE < '19500101');
    Peut être un mauvais réglage de la configuration de votre instance ?
    Vérifiez avec la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT value_in_use 
    FROM   sys.configurations 
    WHERE  name = 'two digit year cutoff';
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 3
    Par défaut
    Merci à vous, cela à l'air de fonctionner je fais des tests demain
    Cordialement
    Pascal DEROSNE

Discussions similaires

  1. Dernière ligne d'une table
    Par geofnich dans le forum SAS Base
    Réponses: 2
    Dernier message: 10/05/2010, 16h26
  2. Réponses: 2
    Dernier message: 08/09/2009, 11h57
  3. Dernière ligne ajoutée à une table + mise à jour
    Par belsuncette dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/10/2007, 12h25
  4. [MySQL] Sélection des dernières lignes d'une table
    Par Civet dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/04/2007, 15h06
  5. Réponses: 6
    Dernier message: 09/06/2006, 18h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo