Oznámení
LAST_INSERT_ID()
před 11 lety
- PetrOdut
- Člen | 3
<?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)
před 11 lety
- phx
- Člen | 652
dibi::insertId()
před 11 lety
- David Grudl
- Nette Core | 6806
$id = dibi::insertId()
před 11 lety
- PetrOdut
- Člen | 3
diky ;-)
před 11 lety
- jansfabik
- Člen | 193
nevíte prosím někdo, jak mám toto řešit u Oracle/MS SQL?
před 11 lety
- phx
- Člen | 652
MSSQL: SELECT @@IDENTITY
před 11 lety
- jansfabik
- Člen | 193
nešlo by to nějak dosadit do insertID? u MSSQL a Oracle mi to jenom vyhodí výjimku
před 11 lety
- phx
- Člen | 652
Koukam, ze David to nema implementovany;)
Melo by stacit misto vyjimky https://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řed 11 lety
- David Grudl
- Nette Core | 6806
přidám to tam
před 11 lety
- jansfabik
- Člen | 193
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é