Salut,
Asadar avem urmatoarea situatie. O tabela (tabela1), doua coloane (col_key [cheie primara], col_math).
Col_key este de tip identity si din cunostintele mele la fiecare insert acea valoare va fi incrementata cu 1(sau alta valoare). Problema este ca valoare lui col_math depinde strict de valoarea lui col_key proaspat generat.
Adica atunci cand eu fac un insert (un insert gol initial pentru ca nu stiu inca valoarea lui col_key) valoare lui col_math sa ia automat valoarea lui
col_key*2 (doar ca exemplu pentru ca e cu totul o alta operatie ce nu are legatura cu matematica si nu poate fi tranpus in TSQL).
Inseram un camp vid si rezulta sa zicem col_key = 417. Acum trebuie sa gasesc o metoda prin care acel col_key sa-mi fie returnat in aplicatie, acolo sa fac operatiile mele ca la final sa fac un update de tipul
UPDATE tabela 1 set col_math= valoare_mea_ce_depinde_de_col_key where col_key=417
Problema este ca aplicatia este concurenta si pot sa am chiar 20-30 de clienti conectata la ea asadar o abordare de tipul:
SELECT col_key top 1 where col_math = null nu poate functiona deoarece pot sa am mai multi clienti care tocmai au facut acel insert null si deci mi se poate returna col_key-ul corespunzator altui client.
Metoda la care m-am gandit eu:
Pe partea de server fac o procedura stocata care sa-mi faca acel insert vid si-mi returneaza fix acel col_key .
Pe partea de client apelez procedura stocata si fac acel update.
Acum nu stiu cum sa fac procedura aceea stocata ca sa fi sigur ca fiecare client concurent primeste exact col_key-ul care trebuie. Sau mai pe scurt, cum generez acel identity in avas (dar sa mai fie si rezervat) urmad ca apoi sa-l transmit catre client.
Stiu ca e simplu dar nu am experienta cu SQL.
Multumesc pentru sprijin.