MERGE und ORA-01791

!DRAFT!

ORA-01791: not a SELECTed expression und MERGE - Statement
Quelle: http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:5229766627656

create table t_videos (title_id number primary key, title varchar2(20) not null, rented_date da
te not null);

insert into t_videos values (1, 'TITANIC', sysdate - 10);
insert into t_videos values (2, 'TERMINATOR-II', sysdate - 12);
insert into t_videos values (3, 'MEN IN BLACK', sysdate - 12);
insert into t_videos values (4, 'TITANIC', sysdate - 10);
insert into t_videos values (5, 'MEN IN BLACK', sysdate - 12);

commit;
select * from t_videos order by rented_date desc;
select distinct title from t_videos order by rented_date desc;
-> Fehler ORA-01791: not a SELECTed expression

select title from (select title, row_number() over (partition by title order by rented_date desc) rno
from t_videos order by rented_date desc) where rno = 1; -> gewünschte Reihenfolge ohne Fehler

=> Vermutung bei uns: Problem bei mehrspaltigem PK im MERGE-Statement -> bei Umbau ein einspaltigem PK kommt kein Fehler;
UND: Fehler scheint abhängig von der Datenkonstellation - ohne Doubletten kein Fehler



Prüfung läuft noch...

Kommentare

Beliebte Posts aus diesem Blog

trunc(sysdate) - nette Spiele mit dem Datum

Zufallszahlen und -text generieren - DBMS_RANDOM

Laufzeiten umrechnen, Sekundenangaben lesbar darstellen