Nejste přihlášen(a)
<?php
$arr = array(
'name' => 'John',
'is_admin' => TRUE,
);
$result = dibi::query('INSERT INTO [table]', $arr);
?>
jde nejakym zpusobem ziskat ID, pod kterym byl do DB pridan zaznam, aniz bych
musel pouzit dotaz dibi::query('SELECT LAST_INSERT_ID()'); ?
Editoval PetrOdut (30. 10. 2008 14:15)
$id = dibi::insertId()
nevíte prosím někdo, jak mám toto řešit u Oracle/MS SQL?
MSSQL: SELECT @@IDENTITY
nešlo by to nějak dosadit do insertID? u MSSQL a Oracle mi to jenom vyhodí výjimku
Koukam, ze David to nema implementovany;)
Melo by stacit misto vyjimky http://api.dibiphp.com/…sql.php.html#134
doplnit neco takovehoto:
$data = dibi::query('SELECT @@IDENTITY');
return $data->fetchSimple();
PS: pisu to z hlavy takze mozna tam budou chyby. A mozna by stalo za to osetrit vyhozeni vyjimky u dibi::query()
Editoval phx (9. 11. 2008 15:26)
přidám to tam
a oracle to taky podporuje:
http://jen.fluxcapacitor.net/…utoincr.html
vytvoření tabulky, sekvence a triggeru:
create table test (id number, testdata varchar2(255)); create sequence test_seq start with 1 increment by 1 nomaxvalue; create trigger test_trigger before insert on test for each row begin select test_seq.nextval into :new.id from dual; end; /
vložení záznamu a zjištění aktuální pozice:
insert into test values(test_seq.nextval, 'voila!');
select sequence_name from user_sequences;
ale myslím si, že implementovat tohle do dibi by bylo hodně složité