Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle MERGE:uruchamiane jest tylko NIE DOPASOWANE

Myślę, że źle zrozumiałeś, do czego służy scalanie.

Spodziewam się, że Twój stół będzie wyglądał następująco:

CREATE TABLE TABLE_FOR_TESTS (
    d DATE,
    t NUMBER(8),
    CONSTRAINT TABLE_FOR_TESTS_PK PRIMARY KEY (d)
)

a następnie instrukcja scalająca może wyglądać tak:

MERGE INTO TABLE_FOR_TESTS t
  USING (SELECT trunc(sysdate) d FROM DUAL) s
    ON (s.d = t.d)
  WHEN MATCHED THEN
    UPDATE SET t = t+1
  WHEN NOT MATCHED THEN         
    INSERT (d, t) VALUES (trunc(sysdate), 1)

gdzie złączenie znajduje się w kluczu podstawowym tabeli i albo zaktualizuj lub wstaw w zależności od tego, czy rekord dla tej wartości PK istnieje.

Miałoby to maksymalnie jeden rekord dziennie, a t zawierałoby liczbę wykonań tej instrukcji dziennie (zakładając, że nie ma innego DML na TABLE_FOR_TESTY).

Uwaga:sysdate sam w sobie zawiera składnik czasu. trunc(sysdate) usuwa go i ustawia godzinę na 00:00:00.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Typ danych Oracle BLOB do RichTextBox

  2. Oracle:jaka jest sytuacja, aby użyć RAISE_APPLICATION_ERROR?

  3. Jak uruchomić plik .sql w narzędziu deweloperskim Oracle SQL, aby zaimportować bazę danych?

  4. Funkcja TANH() w Oracle

  5. Jak obsłużyć typ danych Clob w programie Excel z zapytania SQL?