Inserimento campo su MYSQL

mercoledì 13 aprile 2005 - 18.26

SuperSasch2004 Profilo | Newbie

Salve a tutti avrei una domandina su un mio dubbio ...
io uso mysql server e come front end per connettermi a questo db uso mysql connettor .NET ...
Il mio problema sta nel fatto che sto creando un software di gestione per la gestione di un agriturismo ... il principio è avere più postazioni di lavoro e avere un unico server centrale dove far stare tutti i dati ...
il problema sta nella tabella fatture ... il principio è avere un tabella con chiave primaria di tipo int(6) null auto_increment ...
Quando vado ad inserire un fattura faccio la mia bellissima query
insert into fatture (fatturaid, [...]) values (null,[...])
poi vado a prendere l'ultima fattura inserita nella tabella
select MAX(fatturaid) from fatture LIMIT 1
select * from fatture where fatturaid= $num_fattura
questo principio va bene fino a quando non ci sono più postazioni di lavoro che simultaneamente inseriscono fatture...
volevo sapere se c'era un metodo con mysql connettor .net in modo che appena inserisco una riga nella tabella mi restituisce automaticamente il numero della chiave di quella riga ...

grazie mille

ps- so che mi esprimo da cani ma ad italiano avevo sempre 3 e ad informatica 10

Brainkiller Profilo | Guru

E' semplice, la soluzione ce l'hai già tu.
In SQL Server c'è un comando apposta per avere restituito l'ID (autoincrementante) dell'ultimo record inserito. Basta infatti fare così:

SELECT @@identity

Bisogna trovare il corrispondente in MySQL.

Per l'altra soluzione che però non è tecnicamente corretta (Select max()) potresti usare le transazioni in modo che le operazioni che esegui su una transazione non vengono intaccate da altre e quindi dovrebbe funzionare comunque perfettamente. Mi pare che MySQL supporti le transazioni.

ciao
david

SuperSasch2004 Profilo | Newbie

non sarebbe male trovare il corrispettivo in Mysql .. anche se è da molto che faccio script php, vb e ... che si connettono al Mysql e questa istruzione non l'ho mai usata ...

ora provo a dare un'occhiata in giro ... ti ringrazio per la dritta ...

LeonDom Profilo | Senior Member

Ciao SuperSasch2004, ti confermo quanto detto da Brainkiller, MySQL accetta le transazioni su tabelle di tipo InnoDB.
Avevo anch'io un problema simile al tuo ed l'ho risolto con una transazione....

SuperSasch2004 Profilo | Newbie

problema risolto tramite questa funzione di Mysql
SELECT LAST_INSERT_ID();
come dice il manuale di Mysql
Returns the last automatically generated value that was inserted into an AUTO_INCREMENT column
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5