mysql sequence vapros

8 отговора 202 прегледа
#1

mysql sequence vapros

niakoi znae li moge li v mysql da suzdam sequence kakto v Oracle
i da polzvam imeto.NEXTVAL primerno

ili pone da mi vrushta sledvashtata stoinost za opredelena tablica i kolona... a ne niakakuv obsht broiach

nogo tupo che razrabotchicite na mysql si misliat che auto_increment e advekvatna sequence.

Livin' La Vida Sofa
Отговор
в отговор на AC #2

Re: mysql sequence vapros

едва ли питаш за това, ама аз съм закърпил положението с mysql_insert_id (за РНР говоря)
в хелпа на функцията има едно дълго предупреждение, и накрая завършва с препоръка да ползвам това: LAST_INSERT_ID()

[линк]
Отговор
в отговор на AC #3

а не е ли?

Нали точно за това се спореше и вървеше една тема, малко по-надолу!

До колкото разбрах (а си мисля че този път съм разбрал правилно), правиш полето auto_increment и след това със last_insert_id() взимаш стойността на това поле. И това си е уникално, в смисъл че няма значение дали някой друг вече е въвел нов запис или не, то си е валидно за сесията между теб и mysql сървъра.

Ако греша, salle да ме поправи, но май точно той го беше обяснил.

Редактирано от $burov на

Отговор
в отговор на $burov #4

и аз така разбрах...



[линк]
Отговор
в отговор на $burov #5

problema e slednia

tova go chetoh, ne sum doshul nepodgotven :) no problema e che toia sequence mojesh da go polzvash samo vednaga sled tova i to dokolkoto opitite mi dokazvat samo za sushtata tablica

ako imam edna tablica s edno id1 deto e auto_increment
vtora tablica s drugo id2 sushto auto_increment
treta tablica kadeto id1 i id2 sa FK

i slednata situacia... pisha v ednata tablica, pisha vuv vtorata, pisha v tretata i se opitvam da izvikam poslednite stoinosti za broiachite na drugite (purvite) dve tablici... niama nachin da izvikam konkretnia broiach (sequence) za opredelena tablica (ili pone az ne mojah da otkria takuv nachin) osven ako ne imenovam niakak sequence kato v Oracle. inache kazano ako mojeh da izvikam id1.NEXTVAL ili id2.NEXTVAL niamashe da ima problem... i tova pitam...

edin nachin koito razbrah e s oshte edna tablica kadeto si save-ash stoinostite na "sequence" i posle si polzvash SELECT value FROM seq_table WHERE name="my_uglyseq" ... ma tova shte e preotkrivaneto na toplata voda v PHP, a ako iskah da e v php logikata shtiah da si go napisha i bez tablica kato prosto izpolzvam MAX(id) FROM tablename... no mi se struva grozen i neeleganten nachin da se pravi v php cialata taia manipulacia ta zatova pitah dali puk niama nachin v mySQL da suzdam imenuvana sequence. ili da poiskam konkretnata stoinost za opredelena kolona... ili neshto takova...

dano razbrahte neshto ot dulgoto mi oburkano obiasnenie na problema :)))

Livin' La Vida Sofa
Отговор
в отговор на AC #6

Re: problema e slednia

Някой има ли нерви да го прочете това?

Доколкото се споменяват няколко таблици къкъв е проблема с:

insert into t1 ...;
@t1_last:=last_insert_id();
insert into t2 ...;
@t2_last:=last_insert_id();
insert into t3 ...;
@t3_last:=last_insert_id();

insert into t19 (@t2_last + 36*@t1_last / @t3_last ...

salle.online.bg/sig
Отговор
в отговор на salle #7

spoko be pich

heh
gasi
ne mi pripomniai shto spriah da cheta cialata sekcia Kompiutri

ne e bolka za umirane - ne zimai problema tolkoz navutreshno

mi ne znam kakuv e problema... podobno reshenie ne beshe predstaveno ot drugite postove...

samo spoko.

Livin' La Vida Sofa
Отговор
в отговор на AC #8

Re: ?

Че то ти си кривиш очите и пръстите с тоя идиотски начин на писане. На мен ми е лесно - аз съм си българин.

salle.online.bg/sig
Отговор
в отговор на salle #9

Re: ?

аз и на кирилица не пиша по-разбрано за сметка на това сто пъти по-бавно

тоя начин дето го предложи няма да стане защото 3-те инсърта не са по едно и също време, да не говорим че дори в сегашния му вид не можах да го изпълня

не е на моя машина базата данни и само чрез myphpadmin имам пряк достъп.

баси че трудно, надявам се че поне ще си доволен :)

Livin' La Vida Sofa
Отговор