OVH Cloud OVH Cloud

[WD75] [MYSQL] Blocage de tables

6 réponses
Avatar
jacques trepp
Bonjour,
dans une appli multipostes, je dois :
bloquer une table avec id_auto
faire un insert
lire l'id_auto avec un last_id
débloquer la table

Est-ce que la classe de Frédéric peut s'en charger, ou dois-je le faire avec
une requète ?

Merci

(je retourne copier 100 fois "je ne suis pas antiHF") ;)

--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.708 / Virus Database: 464 - Release Date: 18/06/2004

6 réponses

Avatar
Manu
> dans une appli multipostes, je dois :
bloquer une table avec id_auto



SQLLitBloque()

faire un insert



SQLInsert()

lire l'id_auto avec un last_id



il est dans le membre m_id_auto (si tu as pris m_xxx)

débloquer la table



Commit de ta transaction

Est-ce que la classe de Frédéric peut s'en charger, ou dois-je le faire


avec
une requète ?



Oui, je pense que tu as toutes les méthodes en main.

Sinon, qu'elle est l'utilité de bloquer une ligne d'une table alors que tu
en inseres une autre ???

--
Emmanuel
Avatar
jacques trepp
Manu wrote:
dans une appli multipostes, je dois :
bloquer une table avec id_auto



SQLLitBloque()

faire un insert



SQLInsert()

lire l'id_auto avec un last_id



il est dans le membre m_id_auto (si tu as pris m_xxx)

débloquer la table



Commit de ta transaction

Est-ce que la classe de Frédéric peut s'en charger, ou dois-je le
faire avec une requète ?



Oui, je pense que tu as toutes les méthodes en main.

Sinon, qu'elle est l'utilité de bloquer une ligne d'une table alors
que tu en inseres une autre ???



Merci Manu,
en fait, je raisonnais comme en HF, c'est à dire hbloquetotalfichier

je voudrais éviter que 2 postes se retrouvent avec le même last_id, ou pire
des id intervertis.

Normalement, voilà ce que je souhaite faire :

je bloque la table en-ete de facture
je crée (insert) une nouvelle en-tete de facture.
Je récupère l'id_auto
je débloque la table entete facture
je crée les lignes de factures (dont la foreign key est l'id_auto de
l'en-tete)
je crée les règlements de la facture (dont la foreign key est l'id_auto de
l'en-tete)

c'est peut-être plus compréhensible comme ça :)
--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.708 / Virus Database: 464 - Release Date: 18/06/2004
Avatar
Manu
> je voudrais éviter que 2 postes se retrouvent avec le même last_id, ou


pire
des id intervertis.



Pour moi c'est difficilement envisageable car dès que l'insert est effectué,
on récupère le last_insert_id. Par contre c'est vrai que si on est dans la
même milliseconde...

Normalement, voilà ce que je souhaite faire :

je bloque la table en-ete de facture
je crée (insert) une nouvelle en-tete de facture.
Je récupère l'id_auto
je débloque la table entete facture
je crée les lignes de factures (dont la foreign key est l'id_auto de
l'en-tete)
je crée les règlements de la facture (dont la foreign key est l'id_auto de
l'en-tete)



Oui, bien sur. Pour moi le seul moyen sur c'est de faire un lock table
entete_facture.

c'est peut-être plus compréhensible comme ça :)
--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.708 / Virus Database: 464 - Release Date: 18/06/2004




Avatar
Roumegou
Manu avait prétendu :
je voudrais éviter que 2 postes se retrouvent avec le même last_id, ou pire
des id intervertis.



Pour moi c'est difficilement envisageable car dès que l'insert est effectué,
on récupère le last_insert_id. Par contre c'est vrai que si on est dans la
même milliseconde...



Rassurez moi le last_insert_id n'est pas isolé par session ?????
à savoir, j'obtiens le dernier id que j'ai moi meme provoqué ???

En disant cela, je me suis dit que je pouvais le tester à partir de
plusieurs sessions ouverte sous sqlyog,
et ouf !!! cela est bien propre à la session.

Déjà que je suis en colère aujourd'hui sur mysql à cause du mysqldump
!!

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Manu
> Rassurez moi le last_insert_id n'est pas isolé par session ?????
à savoir, j'obtiens le dernier id que j'ai moi meme provoqué ???

En disant cela, je me suis dit que je pouvais le tester à partir de
plusieurs sessions ouverte sous sqlyog,
et ouf !!! cela est bien propre à la session.



Tu nous otes donc d'un doute.
Avatar
jacques trepp
Manu wrote:
Rassurez moi le last_insert_id n'est pas isolé par session ?????
à savoir, j'obtiens le dernier id que j'ai moi meme provoqué ???

En disant cela, je me suis dit que je pouvais le tester à partir de
plusieurs sessions ouverte sous sqlyog,
et ouf !!! cela est bien propre à la session.



Tu nous otes donc d'un doute.



absolument ! j'étais en train de me poser la même question sur ce code :
ETK:m_DATFCT = DateSys()
ETK:m_HTFCT = HeureSys()
ETK:m_MTHT1 = 0
ETK:m_MTHT2 = 0
ETK:m_MTTTC = TOTAL
ETK:m_TVA1 = 0
ETK:m_TVA2 = 0
SI ETK:SQLInsert() ALORS
nouveau_ticket = ETK:dernier_ID
FIN

Donc, si j'ai bien compris, le ETK:Dernier_ID est bien à moi tout seul ?
ça m'arrange bien, ça !

--
Jacques TREPP
AlbyGest


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.708 / Virus Database: 464 - Release Date: 18/06/2004