From: Volkan YAZICI (yazicivo@ttnet.net.tr)
Date: Sun 19 Mar 2006 - 17:00:17 EET
On Mar 19 02:31, Kerem Can KarakaÅŸ wrote:
> Veri tabanında bu fonksiyonlar ile ilgili sorunları tam olarak çözen
> nihai insert kod parçası için.
>
> <?
>
> mysql_query("LOCK TABLES apc_forms WRITE");
> mysql_query("SET AUTOCOMMIT = 0");
> mysql_query("INSERT INTO apc_forms (form_title, form_event_id,
> form_expirey) VALUES ('title',1,'2005-10-10')");
> define('ID',mysql_query("SELECT LAST_INSERT_ID()"));
> mysql_query("COMMIT");
> mysql_query("UNLOCK TABLES");
>
> ?>
Kesinlikle böyle bir şey kullanılmaması gerektiği fikrindeyim.
Yukarıdaki yöntem, probleme son derece yanlış bir yaklaşım sunuyor.
Basit bir auto_incerement tipindeki alanın değerini o oturum için
öğrenmek amacıyla koskoca bir tablonun yazmaya karşı kilitlenmesi akıl
alacak bir davranış değildir. (PostgreSQL'in MVCC mimarisinden dolayı
yavaş olduğu hakkında dedi kodu üretenler burada da seslerini
yükseltselerdi keşke.)
Sorunun doğru çözümü (en azından MySQL tarafında) nedir bilemem, fakat
bunun kesinlikle yanlış çözüm olduğundan eminim.
İyi çalışmalar.
P.S. MySQL hakkında çok bir bilgim yok. Belki şu belge yardımcı
olabilir:
[22.2.13.3. How to Get the Unique ID for the Last Inserted Row]
http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama