Saya pikir Anda telah salah paham untuk apa penggabungan itu.
Saya berharap meja Anda seperti:
CREATE TABLE TABLE_FOR_TESTS (
d DATE,
t NUMBER(8),
CONSTRAINT TABLE_FOR_TESTS_PK PRIMARY KEY (d)
)
dan kemudian pernyataan gabungan bisa menjadi:
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)
di mana gabungan berada pada kunci utama tabel dan memperbarui atau menyisipkan tergantung pada apakah catatan untuk nilai PK itu ada.
Ini akan memiliki maksimum satu catatan per hari dan t akan menampung jumlah eksekusi pernyataan ini per hari (dengan asumsi tidak ada DML lain di TABLE_FOR_TETS).
Catatan:sysdate dengan sendirinya menyertakan komponen waktu. trunc(sysdate) menghapusnya dan menyetel waktu ke 00:00:00.