Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Problemi di concorrenza di record
mercoledì 03 ottobre 2007 - 15.30
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
LeonDom
Profilo
| Senior Member
471
messaggi | Data Invio:
mer 3 ott 2007 - 15:30
ariecchime...
ho questo problema ora:
ho 5 pc che si collegano ad una pagina e potrebbero collegarsi contemporaneamente, devono prendere un singolo nominativo e lavorarlo. Come posso fare per impedire che lo stesso record venga richiamato da due utenti o più utenti contemporaneamente?
LeonDom
amelix
Profilo
| Expert
694
messaggi | Data Invio:
mer 3 ott 2007 - 15:36
Io imposterei una data di "ultimo accesso" che usi per ordinare i record e poi prendi il più vecchio:
SELECT TOP 1 * FROM TBL1 ORDER BY "ultimo accesso"
Andrea -
http://www.MelisWeb.eu/
LeonDom
Profilo
| Senior Member
471
messaggi | Data Invio:
mer 3 ott 2007 - 15:40
in questo modo però non è detto che due persone prendano due record diversi. O meglio potrebbero accere alla select entrambi e prendere lo stesso record. Esiste un blocco di record che non può essere preso da un'altro utente se uno già ci sta lavorando?
LeonDom
amelix
Profilo
| Expert
694
messaggi | Data Invio:
mer 3 ott 2007 - 15:47
Potresti farti una stored procedure che fa tutto in una unica operazione Select e Update.
Ma loro possono scegliere?
Andrea -
http://www.MelisWeb.eu/
LeonDom
Profilo
| Senior Member
471
messaggi | Data Invio:
mer 3 ott 2007 - 15:54
No non possono scegliere, o meglio non devono poter scegliere se entrano in una certa modalità.
Avevo pensato ad una stored. e ad un update del record con il nome dell'utente che lo deve lavorare.
Quindi mi faccio la select e la ordino in base ad una data (timestamp) e al null del campo che andrò a riempire con la user di chi lo ha preso.
Faccio un update del campo con una stored e poi lo faccio lavorare al tizio che lo ha richiamato. che te ne pare?
LeonDom
amelix
Profilo
| Expert
694
messaggi | Data Invio:
mer 3 ott 2007 - 16:00
Funziona...
Ma io userei il timestamp come clausola where nell'update per essere sicuro che l'update sia corretto.
Andrea -
http://www.MelisWeb.eu/
LeonDom
Profilo
| Senior Member
471
messaggi | Data Invio:
mer 3 ott 2007 - 16:05
credo che proverò in questo modo, anche perché, non me ne vengono di migliori in mente...
LeonDom
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
gio 4 ott 2007 - 08:25
Scusate se mi intrometto, ma se segni in una struttura Static o in una variabile application gli id in lavorazione? Quando esegui la queri ti basta applicare una clausola where I_ID not in (...)
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
LeonDom
Profilo
| Senior Member
471
messaggi | Data Invio:
gio 4 ott 2007 - 09:05
grazie wamba è un'altro tentativo che potrei fare.
LeonDom
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
gio 4 ott 2007 - 10:53
Di niente figurati, facci sapere com'è finita
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
LeonDom
Profilo
| Senior Member
471
messaggi | Data Invio:
lun 15 ott 2007 - 10:52
Buongiorno a tutti, riprendo questo post. Non ho molta familiarità con le stored.
Come faccio a fare Select e Update in un unica Procedure?
CREATE PROC sp_Assegnazione
@UserID nvarchar(50),
@ExtendedID nvarchar (5)
AS
DECLARE @Ret int
-- Prelevo il primo record per l'update--
SELECT Top 1 MIO_ID FROM MIA_TABELLA
WHERE extended = 'N'
ORDER By Change
-- Tento di fare l'update
UPDATE MIA_TABELLA
SET U_ID = @UserID, extended_ID = @ExtendedID
WHERE MIO_ID = @Ret
EXEC sp_Assegnazione 'Admin', 'Z'
GO
..Il comando o i comandi sono stati completati.
Però non mi fa l'update di niente... qualcuno può aiutarmi?
LeonDom
amelix
Profilo
| Expert
694
messaggi | Data Invio:
lun 15 ott 2007 - 10:57
Hai dimenticato di valorizzare @Ret.
Andrea -
http://www.MelisWeb.eu/
LeonDom
Profilo
| Senior Member
471
messaggi | Data Invio:
lun 15 ott 2007 - 11:15
anche in questo modo non fa niente
CREATE PROC sp_Assegnazione
@UserID nvarchar(50),
@ExtendedID nvarchar (5)
AS
DECLARE @Ret int
-- Prelevo il primo record per l'update--
SET @Ret = (SELECT Top 1 MIO_ID FROM MIA_TABELLA
WHERE extended = 'N'
ORDER By Change)
-- Tento di fare l'update
UPDATE MIA_TABELLA
SET U_ID = @UserID, extended_ID = @ExtendedID
WHERE MIO_ID = @Ret
EXEC sp_Assegnazione 'Admin', 'Z'
GO
LeonDom
amelix
Profilo
| Expert
694
messaggi | Data Invio:
lun 15 ott 2007 - 15:36
Domanda: i campi extended e extended_ID sono diversi o hai sbagliato a scrivere?
>SET @Ret = (SELECT Top 1 MIO_ID FROM MIA_TABELLA
>WHERE extended = 'N'
>ORDER By Change)
>UPDATE MIA_TABELLA
>SET U_ID = @UserID, extended_ID = @ExtendedID
>WHERE MIO_ID = @Ret
Andrea -
http://www.MelisWeb.eu/
LeonDom
Profilo
| Senior Member
471
messaggi | Data Invio:
lun 15 ott 2007 - 15:42
Avevo sbagliato a scrivere... ma ho risolto con la tua indicazione, ora funziona. Spero solo che mi serva a fare in modo che non ci siano concomitanze...
LeonDom
Torna su
Stanze Forum
Elenco Threads
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 !