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...
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
Kommentar veröffentlichen