Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 08:01 21.05.24 
Компютри и Интернет
   >> Бази данни
*Кратък преглед

Тема izvli4ane na id  
Авторorlin (Нерегистриран)
Публикувано05.03.03 10:26



MySQL & JAVA!!!

zdravejte vsi4ki, imam edin vapros svyrzan s izvli4ane na id, koeto e primary key ot
nowozapisan red v tablica:

create table groups
(
g_id int(4) not null auto_increment,
g_usr_id int(4) not null, # id na user suzdawa6t grupata
g_name char(15) not null, # ime na grupate
primary key(g_id)
);

usloviqta sa, 4e moje da sy6testvuvat n reda s ednakvi g_usr_id i g_name
tursq 100% siguren na4in da izwleka g_id sled kato sam zapisal nowa grupa.

primeren podhod e:

INSERT INTO groups (g_usr_id, g_name) VALUES (1001, 'my_new_group');
SELECT max(g_id) WHERE g_usr_id = 1001 AND g_name = my_new_group;

teoreti4no m/u dvete zaqvki, drug user, kojto se e lognal sas su6toto id(koeto e dopustimo) moje da syzdade su6tata grupa. v tozi slu4aj 6te polu4a negowoto g_id.



Тема Re: То си пише ...нови [re: orlin]  
Автор salle (минаващ)
Публикувано05.03.03 10:46



LAST_INSERT_ID()





Редактирано от salle на 05.03.03 10:50.



Тема Re: То си пише ...нови [re: salle]  
Авторsvircho (Нерегистриран)
Публикувано05.03.03 11:34



А какво ще стане, ако между insert-а и SELECT LAST_INSERT_ID(); има интервал от 2 секунди да кажем и в същото време друг потребител insert-не нов запис. Имам в предвид SELECT LAST_INSERT_ID() връща последното insert-нато ID за тази транзакция или по принцип ще върне last automatically generated value за това autoincrement поле. Защото ако е така, ще се изгуби логиката?



Тема Re: То си пише ...нови [re: svircho]  
Авторperlsite (Нерегистриран)
Публикувано05.03.03 13:24



Shte ti dam primer sys Perl i DBI interface-a.

my $resHand = $sth->execute();

$resHand e obect syszdaden sled kato si izvikal SQL zaqvkata za INSERT

sled koeto mojesh da izvikash:

$row = $sth->{'mysql_insertid'};

Koeto se otnasq tochno za posledniqt INSERT... s dve dumi... $sth se "popylva" po syshtoto vreme kogato se insert-va red-a i tyi kato zaqvkite v MySQL sa "atomic" ne e vyzmojno MySQL da ti vyrne greshno ID..dori i da imash 1000 zaqvki/sec.

V Java trqbwa da ima podobno neshto, tyi kato tova ne zavisi ot programniqt ezik a ot MySQL



Тема Къде го пише?нови [re: perlsite]  
Авторsvircho (Нерегистриран)
Публикувано05.03.03 13:45



Именно за това става въпрос, къде в документацията на MySQL е указано, че става така, както ти казваш. Paste-вам от линка, който salle е дал за справка: "Note that as mysql_insert_id() is only updated after INSERT and UPDATE statements" и никъде не виждам, което ти твърдиш.
Докажи ми, че всичко това се случва в тази транзакция а не важи глобално. Ако някой друг направи insert и стойността на autoincrement полето се увеличи, то last_insert_id() и mysql_insert_id() какво ще върнат: последното insert-нато id за тази транзакция или последното insert-нато id в таблицата по принцип.
Просто ми е интересно как е решен този проблем в MySQL.



Тема Re: Къде ли не ...нови [re: svircho]  
Автор salle (минаващ)
Публикувано05.03.03 15:10



Тази функция я има от години и тя работи точно по този начин.

И няма нищо общо с транзакциите!

LAST_INSERT_ID()
User Variables - @a := "a"
CREATE TEMPORARY ...

Всички тези са специфични за дадена Сесия!

Поне 20 пъти съм го обяснявал в този клуб а и във всички книги в които се споменава MySQL това се коментила обстойно - поне за LAST_INSERT_ID()



Тема Re: Толкова ли не можете да намерите това:нови [re: salle]  
Автор salle (минаващ)
Публикувано05.03.03 15:21





8.4.6.3 How Can I Get the Unique ID for the Last Inserted Row?

...

The most recently generated ID is maintained in the server on a per-connection basis. It will not be changed by another client. It will not even be changed if you update another AUTO_INCREMENT column with a non-magic value (that is, a value that is not NULL and not 0).



Тема Re: Къде ли не ...нови [re: salle]  
Авторsvircho (Нерегистриран)
Публикувано05.03.03 15:50



С тия изказвания:"Поне 20 пъти съм го обяснявал в този клуб" ти просто предизвикваш хората да се заяждат с теб. Със сигурност има и по нормален начин да го кажеш.
Но аз ще ти кажа само - благодаря за това, че ми обясни как е решен този проблем в MySQL!



Тема Re: Ми нека се заяждат ...нови [re: svircho]  
Автор salle (минаващ)
Публикувано05.03.03 16:45



Ама това е старо като света дето се казва.

За справка пробвай:






*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.