Tak w SQLTools jest tak jak napisałeś zgodnie z moimi oczekiwaniami, natomiast w Android studio w ogóle nie dodaje ani za pierwszym razem ani za drugim razem
tego trochę nie rozumiem
sprawdź dla
turbo_unikalny_numer_1_na_potrzeby_sql_tools
!= turbo_unikalny_numer_1_na_potrzeby_android_studio
!= jakikolwiek istniejący w bazie
No właśnie to jest kluczowe, bo najprawdopodobniej popełniasz błąd logiczny w rozumieniu samego inserta.
Ogólnie od strony bazodanowej mówi: dodaj rekord, jeśli w bazie nie istnieje rekord z numerem telefonu = jakiśtam.
Zrób coś takiego.
select max(phone) from clients;
Załóżmy, że dostaniesz 690223225. To znaczy, że wszystkie numery telefonu są <= 690223225.
Teraz robisz testy, w sqltools dla numeru telefonu 691000000 (bo na pewno takiego w bazie nie ma), w android studio dla 692000000 (bo na pewno takiego w bazie nie ma).
Czyli, w sqltools wykonaj
insert into CLIENT (UPDSTMP, STATUS, GID, PHONE, CLNTNAM1)
SELECT SYSDATE, 'A', '103', 691000000,'PIOTER' from dual
where not exists(select * from CLIENT where PHONE = 691000000 );
Po pierwszym wykonaniu powinien dodać się rekord dla Piotera.
Po drugim wykonaniu nie powinno się nic dodać, bo numer telefonu 691000000 jest już zajęty.
Teraz w android studio sprawdzasz:
insert into CLIENT (UPDSTMP, STATUS, GID, PHONE, CLNTNAM1)
SELECT SYSDATE, 'A', '103', 692000000,'PIOTER' from dual
where not exists(select * from CLIENT where PHONE =692000000 );
Po pierwszym wykonaniu powinien dodać się rekord dla Piotera.
Po drugim wykonaniu nie powinno się nic dodać, bo numer telefonu 692000000 jest już zajęty.
Niestety wciąż nie działa w Android Studio, mam wrażenie że chodzi tu o jakieś zasady wpisywania w Android Studio ponieważ gdy np. działający kod :
String query1 = "INSERT INTO client (GID, CLNTNO, CLNTNAM2, CLNTNAM1, PHONE, PLACE, ZIP, CLNTEMAIL, LOYALTYSMS, LOYALTYEMAIL, STATUS, UPDSTMP)"
+ "VALUES (nextgid.nextval, dr_client.nextval, '"+naz+"', '"+imi+"', 505505505, 'SKI', '16-400', '[email protected]', '"+str_zgoda1+"', 'N', 'A', SYSDATE)";
nie rozbiję na dwie linijki dodając + przy następnej to też nie działa w jednej. Może to coś komuś podpowie :(
Próbowałem
"insert into CLIENT (UPDSTMP, STATUS, GID, PHONE, CLNTNAM1)"
+"SELECT SYSDATE, 'A', '103', 692000000,'PIOTER' from dual"
+"where not exists(select * from CLIENT where PHONE =692000000 );"