• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Oracle SQL Insert if not exist

Object Storage Arubacloud
0 głosów
1,937 wizyt
pytanie zadane 7 marca 2016 w SQL, bazy danych przez gromula Stary wyjadacz (10,070 p.)

Cześć 

Potrzebna pomoc 

Przy insertcie user potrzebuję najpierw sprawdzić czy istnieje taki username.

Coś w stylu z MySQL'a "if not exist" (jeśli istnieje w bazie to nie rób inserta)

widziałem gdzieś:


INSERT INTO user ( 
    username
) 
SELECT                - ?
    user              - ?
FROM DUAL
WHERE NOT EXISTS (
    SELECT 1 
    FROM user
    WHERE username = 'bartek'
);

 

 

tabela user (iduser, username) 

2 odpowiedzi

+1 głos
odpowiedź 8 marca 2016 przez Sareley Gaduła (4,740 p.)
wybrane 8 marca 2016 przez gromula
 
Najlepsza

Spróbuj napisać warunek w takiej formie:

DECLARE 

  cnt NUMBER;

BEGIN

  SELECT COUNT(*)

   INTO cnt

    FROM mytable

  WHERE id = 12345;



  IF( cnt = 0 )

  THEN

    ...

  ELSE

    ...

  END IF;

END;

Źródło: https://community.oracle.com/thread/321710?tstart=0

Nie miałem pojęcia że Oracle nie ma czegoś takiego warunku jak IF (NOT) EXISTS

komentarz 8 marca 2016 przez gromula Stary wyjadacz (10,070 p.)
Fakt poradziłem sobie już dzisiaj prześlę jeszcze możliwe opcje, ale dzieki
0 głosów
odpowiedź 7 marca 2016 przez mbabane Szeryf (79,280 p.)
edycja 7 marca 2016 przez mbabane

np. wyzwalaczem (ang. trigger) mozna cos takiego zrobic, albo jeszcze prosciej ustawic pole username jako klucz glowny

 

znalazlem jeszcze cos takiego:

INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE NOT EXISTS (SELECT *
                  FROM clients
                  WHERE clients.client_id = suppliers.supplier_id);

 

http://www.techonthenet.com/oracle/insert.php

komentarz 7 marca 2016 przez gromula Stary wyjadacz (10,070 p.)
Czy nie uważasz, że to jest to samo co ja mam?

nie działa mi wlaśnie o to chodzi :)

tylko dla jednej tabeli z kolumną username bo idusername jest sekwencja - tabela czysto robocza z dwoma kolumnami
komentarz 8 marca 2016 przez mbabane Szeryf (79,280 p.)

nie działa mi wlaśnie o to chodzi :)

tylko dla jednej tabeli z kolumną username bo idusername jest sekwencja - tabela czysto robocza z dwoma kolumnami

a czy nie uwazasz ze mozna bylo napisac o tym w poscie? 

Podobne pytania

0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 14 grudnia 2016 w SQL, bazy danych przez Szejk Obywatel (1,510 p.)
0 głosów
2 odpowiedzi 175 wizyt
pytanie zadane 14 stycznia 2023 w SQL, bazy danych przez haitoke Nowicjusz (240 p.)
0 głosów
0 odpowiedzi 100 wizyt
pytanie zadane 27 maja 2022 w SQL, bazy danych przez Hardwell Dyskutant (8,980 p.)

92,555 zapytań

141,404 odpowiedzi

319,559 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...