Saya memiliki tabel workqueue yang memiliki kolom workid. Kolom workID memiliki nilai yang bertambah secara otomatis. Apakah ada cara saya dapat menjalankan query di backend untuk memasukkan baris baru dan membuat kolom workID bertambah secara otomatis?
Ketika saya mencoba menyisipkan null, ia melempar kesalahan ORA01400 - Tidak dapat menyisipkan null ke workid.
insert into WORKQUEUE (facilitycode,workaction,description) values ('J', 'II', 'TESTVALUES')
Apa yang telah saya coba sejauh ini - Saya mencoba melihat detail tabel dan tidak melihat adanya auto-increment. Skrip tabel adalah sebagai berikut
"WORKID" NUMBER NOT NULL ENABLE,
Database: Oracle 10g
Tangkapan layar dari beberapa data yang ada.
PENGGANTI:
Saya harus berterima kasih kepada setiap dan semua orang atas bantuannya. Hari ini adalah pengalaman belajar yang luar biasa dan tanpa dukungan Anda, saya tidak bisa melakukannya. Intinya adalah, saya mencoba memasukkan baris ke dalam tabel yang sudah memiliki urutan dan pemicu. Yang harus saya lakukan adalah menemukan urutan yang tepat, untuk pertanyaan saya, dan memanggil urutan itu ke dalam kueri saya.
Tautan yang Anda semua berikan kepada saya membantu saya mencari urutan-urutan ini dan menemukan salah satu urutan untuk kolom workid ini. Terima kasih kepada Anda semua, saya mengacungkan jempol kepada semua orang, saya dapat mengatasi naga lain hari ini dan membantu perawatan pasien mengambil langkah maju!
Untuk mendapatkan nomor kenaikan otomatis, Anda perlu menggunakan urutan di Oracle. (Lihat di sini dan di sini).
CREATE SEQUENCE my_seq;
SELECT my_seq.NEXTVAL FROM DUAL; -- to get the next value
-- use in a trigger for your table demo
CREATE OR REPLACE TRIGGER demo_increment
BEFORE INSERT ON demo
FOR EACH ROW
BEGIN
SELECT my_seq.NEXTVAL
INTO :new.id
FROM dual;
END;
/
Anda dapat menggunakan SEQUENCE
atau TRIGGER
untuk meningkatkan secara otomatis nilai kolom tertentu dalam tabel database Anda, namun penggunaan TRIGGERS
akan lebih tepat. Lihat dokumentasi Oracle berikut ini yang berisi klausa utama yang digunakan dengan trigger dengan contoh-contoh yang sesuai.
Gunakan pernyataan CREATE TRIGGER untuk membuat dan mengaktifkan trigger database, yaitu:
- Sebuah blok PL/SQL tersimpan yang diasosiasikan dengan tabel, skema, atau database atau
- Blok PL/SQL anonim atau panggilan ke prosedur yang diimplementasikan dalam PL/SQL atau Java
Oracle Database secara otomatis mengeksekusi trigger ketika kondisi tertentu terjadi. Lihat.
Berikut ini adalah TRIGGER
sederhana hanya sebagai contoh untuk Anda yang menyisipkan nilai kunci utama dalam tabel tertentu berdasarkan nilai maksimum kolom tersebut. Anda dapat memodifikasi nama skema, nama tabel, dll dan menggunakannya. Coba saja.
/*Create a database trigger that generates automatically primary key values on the CITY table using the max function.*/
CREATE OR REPLACE TRIGGER PROJECT.PK_MAX_TRIGGER_CITY
BEFORE INSERT ON PROJECT.CITY
FOR EACH ROW
DECLARE
CNT NUMBER;
PKV CITY.CITY_ID%TYPE;
NO NUMBER;
BEGIN
SELECT COUNT(*)INTO CNT FROM CITY;
IF CNT=0 THEN
PKV:='CT0001';
ELSE
SELECT 'CT'||LPAD(MAX(TO_NUMBER(SUBSTR(CITY_ID,3,LENGTH(CITY_ID)))+1),4,'0') INTO PKV
FROM CITY;
END IF;
:NEW.CITY_ID:=PKV;
END;
Akan secara otomatis menghasilkan nilai-nilai seperti CT0001
, CT0002
, CT0002
dan seterusnya dan menyisipkan ke dalam kolom yang diberikan dari tabel yang ditentukan.