kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Shaji
Shaji
Question

Oracle - Sisipkan Baris Baru dengan ID Inkremental Otomatis

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. masukkan deskripsi gambar di sini


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!

29 2012-01-03T19:38:29+00:00 3
Jonathan Leffler
Jonathan Leffler
Pertanyaan edit 3 Januari 2012 в 11:42
Pemrograman
sql
oracle
oracle10g
plsql
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
 SlavaNov
SlavaNov
3 Januari 2012 в 7:42
2012-01-03T19:42:22+00:00
Lebih
Sumber
Sunting
#15100673

Tidak ada auto_increment bawaan di Oracle.

Anda perlu menggunakan sequences dan triggers.

Baca disini bagaimana melakukannya dengan benar. (Langkah-demi-langkah cara untuk "Membuat kolom penambahan otomatis di Oracle &")

18
0
Solution / Answer
Johnny Graber
Johnny Graber
3 Januari 2012 в 7:43
2012-01-03T19:43:39+00:00
Lebih
Sumber
Sunting
#15100674

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;
/
Johnny Graber
Johnny Graber
Jawaban edit 30 April 2014 в 9:07
18
0
 Lion
Lion
3 Januari 2012 в 7:55
2012-01-03T19:55:52+00:00
Lebih
Sumber
Sunting
#15100675

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.

 Lion
Lion
Jawaban edit 3 Januari 2012 в 8:25
2
0
Related communities 3
Oracle Indonesia
Oracle Indonesia
710 pengguna
Group belajar, diskusi, dan berbagi tentang berbagai produk dan teknologi Oracle. Disclaimer: This group is not in any affilation nor maintained by the Oracle.
Buka telegram
OrcV2 🇲🇨Indonesia🇮🇩
OrcV2 🇲🇨Indonesia🇮🇩
98 pengguna
Website : https://orcv2token.tech/ Tg Global : https//t.me/orcv2
Buka telegram
Oracle_id
Oracle_id
57 pengguna
Oracle_id adalah komunitas Penikmat Oracle seluruh Indonesia, fokus membahas product2 Oracle
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Daniel Gogov
Terdaftar 6 hari yang lalu
2
工藤 芳則
Terdaftar 1 minggu yang lalu
3
Ирина Беляева
Terdaftar 2 minggu yang lalu
4
Darya Arsenyeva
Terdaftar 2 minggu yang lalu
5
anyta nuam-nuam (LapuSiK)
Terdaftar 2 minggu yang lalu
DE
ES
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi