PHP / Oracle, içine Birleştirme gelen id takılı döndürülüyor

2 Cevap php

Şu anda bir Oracle veritabanı ile bir PHP proje üzerinde çalışıyorum. Bir tabloyu güncelleştirmek için, ben çalışıyorum php kod SQL bir tabloya döngü yöntemi "birleştirme" ve birden fazla kayıt için değerleri başka bir tablo varsa görmek kullanır. Onlar henüz yoksa, değerler benim tabloya eklenir. Değerler zaten varsa, hiçbir şey olmuyor.

Ben sorgu INTO MERGE oluşturulan otomatik artırılır id kullanan bundan sonra başka bir sorgu çalıştırmak istiyorum. Yeni oluşturulan kimlikleri bir dizisini almak için bir yolu var mı? Ben mysql_insert_id gibi bir şey için umuyordum, ama henüz böyle bir şey bulamadı.

Teşekkürler!

2 Cevap

Oracle has supported the MERGE syntax since 9i. Denemedim, ama birleştirme tablosunda İADE fıkra kullanmanız mümkün olabilir ...

Oracle uses sequences for handling automatically incremented values. Eğer bir dizi oluşturduktan sonra, kullanabilirsiniz:

sequence_name.CURVAL

.. mysql_insert_id dönecekti, ne gibi geçerli değerini alır. Birincil anahtar doldurmak için kullanmak istiyorum:

sequence_name.NEXTVAL

INSERT deyim, bir ilköğretim doldurmak için kullanmak istiyorum:

INSERT INTO your_table
  (pk_id, ..
VALUES
  (your_sequence.NEXTVAL, ...)

Bir alternatif olarak tetikler kullanabilirsiniz, ancak mevcut değerini döndürmez.

Ne kimlikleri auto_incremented? AFAIK, Oracle böyle bir şey yoktur. Sen masaya bir tetik ve bir sıra numarası ekleyerek davranışını taklit edebilirsiniz ama mysql_insert_id hiçbir eşdeğeri () kesinlikle yoktur.

Ben geri gitmek ve kayıtları tanımlamak için başka bir yol bulmak gerek.

C.