SAP Tutorial HANA: Membuat Urutan

โšก Ringkasan Cerdas

Buat Urutan di SAP HANA mendefinisikan objek basis data yang secara otomatis menghasilkan daftar nilai numerik yang bertambah. Parameter mengontrol nilai awal, penambahan, batasan, siklus, dan perilaku caching dari generator.

  • ๐Ÿ”ข Definisi Inti: Suatu urutan menghasilkan angka sesuai dengan aturan yang ditetapkan dalam spesifikasinya, baik secara menaik maupun menurun.
  • ๐Ÿ”— Tidak ada pengikatan tabel: Urutan (sequence) adalah objek independen yang digunakan oleh aplikasi dan tidak terhubung ke tabel mana pun.
  • ๐Ÿ“ Dua Nilai: CURRVAL mengembalikan nilai saat ini dan NEXTVAL memajukan urutan dan mengembalikan nilai yang baru.
  • ๏ธ Parameter Utama: START WITH, INCREMENT BY, MAXVALUE, MINVALUE, CYCLE, dan CACHE membentuk output.
  • โ™ป๏ธ Bersepeda: CYCLE memulai ulang penomoran pada batas; NO CYCLE adalah pengaturan default dan akan menimbulkan kesalahan.
  • โšก Cache: CACHE memesan blok angka per node untuk kecepatan; NO CACHE adalah pengaturan default.
  • ๐Ÿ”„ Opsi Reset: RESET BY menjalankan subkueri saat basis data dimulai ulang dan melanjutkan dari nilai yang dikembalikannya.

Buat urutan di SAP HANA

Apa itu Urutan?

Urutan adalah objek database yang secara otomatis menghasilkan daftar nilai numerik yang bertambah menurut aturan sebagaimana ditentukan dalam spesifikasi urutan.

Misalnya untuk memasukkan nomor pegawai secara otomatis pada kolom (EMPLOYEE_NO) Tabel, ketika ada record baru yang dimasukkan ke dalam tabel, maka kita menggunakan sequence.

Nilai urutan dihasilkan dalam urutan Ascending atau Descending.

Urutan tidak dikaitkan dengan tabel; mereka digunakan oleh aplikasi. Ada dua nilai secara berurutan โ€“

  • CURRVAL โ€“ Memberikan nilai Urutan Saat Ini.
  • NEXTVAL โ€“ Memberikan nilai urutan Berikutnya.

SINTAKSIS

CREATE SEQUENCE <sequence_name> [<sequence_parameter_list>] [RESET BY <subquery>]

ELEMEN SINTAKS

UNSUR DESKRIPSI
Itu adalah nama urutannya.
[ ] Ini menentukan satu atau lebih parameter urutan.
DIMULAI DARI Ini menggambarkan nilai urutan awal.
PENINGKATAN OLEH Ini menentukan nilai yang akan bertambah dari nilai terakhir yang ditetapkan setiap kali nilai urutan baru dihasilkan. Standarnya adalah 1.
NILAI MAKSIMUM Ini menentukan nilai maksimum yang dapat dihasilkan oleh urutan tersebut. Nilainya bisa berkisar antara -4611686018427387903 dan 4611686018427387902.
TIDAK ADA NILAI MAKSIMAL Jika NO MAXVALUE ditentukan, untuk urutan menaik, nilai maksimumnya adalah 4611686018427387903 dan nilai minimum untuk urutan menurun adalah -1.
NILAI MIN / TANPA NILAI MIN Ini menentukan nilai minimum yang dapat dihasilkan oleh suatu urutan. Nilainya bisa berkisar antara -4611686018427387904 dan 4611686018427387902. Saat opsi NO MINVALUE digunakan, nilai minimum untuk urutan menaik adalah 1.
SIKLUS Direktif CYCLE menentukan bahwa nomor urutan akan dimulai ulang setelah mencapai nilai maksimum atau minimumnya.
TANPA SIKLUS Opsi default. Direktif NO CYCLE menentukan bahwa nomor urut tidak akan diurutkan ulang setelah mencapai nilai maksimum atau minimumnya.
CACHE Ukuran cache menentukan rentang nomor urutan mana yang akan disimpan dalam cache di sebuah node. Harus berupa bilangan bulat tanpa tanda.
TANPA CACHE Opsi default. Direktif NO CACHE menentukan bahwa nomor urutan tidak akan disimpan dalam cache di sebuah node.
SETEL ULANG OLEH Ini menentukan bahwa selama restart database, database secara otomatis mengeksekusi dan nilai urutan dimulai ulang dengan nilai yang dikembalikan.

Contoh -

Kita akan membuat sequence dengan nama DHK_SCHEMA.EMP_NO, yang akan membuat nilai sequence bertambah +1 setiap kali, saat sequence tersebut digunakan.

Skrip Urutan โ€“

CREATE SEQUENCE DHK_SCHEMA.EMP_NO START WITH 100 INCREMENT BY 1;

Di sini kita akan menggunakan objek "urutan" dalam contoh di bawah ini untuk menaikkan nilai no karyawan sebanyak +1 setiap kali kueri pemilihan dijalankan. Dalam kueri, "nextval" dapat digunakan untuk pembuatan nomor seri atau jenis persyaratan yang sama.

Penggunaan Urutan โ€“

SELECT DHK_SCHEMA.EMP_NO.nextval FROM DUMMY;

OUTPUT โ€“ 100, 101, 102 โ€ฆ dan seterusnya untuk setiap eksekusi kueri select di atas.

Cara Menggunakan Urutan dalam Tabel

Contoh di atas mengembalikan sebuah angka tetapi tidak menyimpannya di mana pun. Tiga pola menghubungkan sebuah urutan dengan data nyata, dan pilihan yang tepat bergantung pada seberapa banyak kendali yang dibutuhkan aplikasi.

1) Panggil NEXTVAL langsung di dalam perintah INSERT. Pendekatan yang paling eksplisit. Aplikasi menentukan kapan suatu angka dikonsumsi.

CREATE COLUMN TABLE DHK_SCHEMA.EMPLOYEE (
  EMPLOYEE_NO INTEGER NOT NULL,
  EMP_NAME    NVARCHAR(100),
  PRIMARY KEY (EMPLOYEE_NO)
);

INSERT INTO DHK_SCHEMA.EMPLOYEE
  VALUES (DHK_SCHEMA.EMP_NO.NEXTVAL, 'Anita Sharma');

2) Gunakan urutan tersebut sebagai nilai default kolom. Nomor tersebut ditetapkan bahkan ketika perintah penyisipan tidak menyebutkan kolom, yang sesuai untuk aplikasi yang tidak pernah dirancang untuk mengetahui tentang urutan tersebut.

CREATE COLUMN TABLE DHK_SCHEMA.EMPLOYEE2 (
  EMPLOYEE_NO INTEGER DEFAULT DHK_SCHEMA.EMP_NO.NEXTVAL,
  EMP_NAME    NVARCHAR(100)
);

INSERT INTO DHK_SCHEMA.EMPLOYEE2 (EMP_NAME) VALUES ('Ravi Kumar');

3) Baca nilai yang baru saja dikeluarkan. CURRVAL mengembalikan angka terakhir yang diambil dalam sesi ini, yang merupakan cara baris anak dihubungkan dengan baris induk yang baru saja dimasukkan.

SELECT DHK_SCHEMA.EMP_NO.CURRVAL FROM DUMMY;

โš ๏ธ Peringatan: CURRVAL akan gagal dengan kesalahan sampai NEXTVAL dipanggil setidaknya sekali dalam sesi saat ini. Fungsi ini melaporkan nilai yang diberikan ke sesi ini, bukan nilai maksimum global, sehingga dua sesi dapat memiliki nilai saat ini yang berbeda pada saat yang bersamaan.

Kolom Urutan vs Kolom Identitas

SAP HANA juga menawarkan kolom identitas, yang menghasilkan angka tanpa objek terpisah. Keduanya menyelesaikan masalah yang sama dengan cara yang berbeda.

Parameter Urutan Kolom identitas
Jenis objek Objek basis data independen Properti kolom dari satu tabel
Dibagikan di semua meja Ya, sejumlah tabel dapat mengambil data dari sana. Tidak, itu milik satu kolom saja.
Nilai terlihat sebelum dimasukkan Ya, melalui NEXTVAL Tidak, dihasilkan saat penyisipan.
Definisi BUAT URUTAN DIBUAT SECARA DEFAULT SEBAGAI IDENTITAS
Terbaik untuk Penomoran bersama, sisipan induk dan anak Kunci pengganti sederhana pada satu tabel

Pilih urutan ketika nomor harus diketahui sebelum baris tersebut ada, atau ketika beberapa tabel berbagi satu rangkaian penomoran. Pilih kolom identitas untuk kunci pengganti biasa tanpa persyaratan yang lebih luas.

Mengelola Urutan: ALTER, DROP, dan Jeda

Suatu rangkaian jarang tetap seperti saat pertama kali dibuat. Tiga tugas pemeliharaan muncul berulang kali.

Mengubah perilaku. ALTER SEQUENCE menyesuaikan penambahan, batasan, atau siklus dari urutan yang ada tanpa penurunan.ping Perintah RESTART WITH akan mereset penghitung, yang merupakan langkah umum setelah pemuatan ulang data uji.

ALTER SEQUENCE DHK_SCHEMA.EMP_NO RESTART WITH 1000;
ALTER SEQUENCE DHK_SCHEMA.EMP_NO INCREMENT BY 10;
DROP SEQUENCE DHK_SCHEMA.EMP_NO;

Memahami kesenjangan. Nomor urut tidak dijamin berurutan, dan ini mengejutkan orang-orang yang mengharapkan jejak audit yang tidak terputus. Celah muncul karena tiga alasan:

  • Transaksi dibatalkan. NEXTVAL bukan merupakan fungsi transaksional. Angka yang digunakan oleh operasi insert yang kemudian di-rollback tidak akan pernah diterbitkan ulang.
  • cache. Dengan CACHE 100, sebuah node memesan seratus nilai sekaligus. Restart akan membuang semua nilai yang tidak terpakai dalam blok tersebut.
  • Sesi bersamaan. Dua sesi memasukkan angka secara bersamaan dan menyisipkan angka-angka tersebut secara bergantian, sehingga tidak ada yang melihat urutan yang berkelanjutan.

Aturan praktisnya adalah memperlakukan urutan sebagai sumber pengenal unik, bukan sebagai penghitung jumlah baris yang ada. Jika rangkaian yang tidak terputus merupakan persyaratan hukum, seperti penomoran faktur, rangkaian tersebut harus dihasilkan oleh logika aplikasi dengan kontrolnya sendiri, bukan oleh urutan basis data.

Menemukan apa yang sudah ada. Tampilan sistem SEQUENCES mencantumkan setiap urutan beserta nilai saat ini, yang merupakan cara tercepat untuk mengaudit skema. Sintaks terkait dibahas di bagian selanjutnya. SAP HANA SQL dan definisi kolom di SAP Tipe data HANA.

Pertanyaan Umum Demo Slot

Transaksi yang dibatalkan, blok yang di-cache hilang saat restart, dan sesi bersamaan semuanya menciptakan celah. Urutan menjamin keunikan, bukan rangkaian nilai yang berkelanjutan.

Ya. Sebuah sequence bersifat independen dari tabel mana pun, sehingga beberapa tabel dapat mengambil data darinya. Ini berguna ketika pengidentifikasi harus unik di seluruh skema, bukan per tabel.

Ya. Menganalisis throughput penyisipan menunjukkan berapa banyak nilai yang dikonsumsi oleh sebuah node di antara proses restart, yang menyeimbangkan peningkatan kecepatan dari caching dengan ukuran celah yang diciptakannya.

Ya. Membandingkan nilai saat ini dengan MAXVALUE dan tingkat konsumsi memprediksi kelelahan, sehingga urutan diperluas sebelum penyisipan mulai gagal dalam produksi.

Karena NEXTVAL belum dipanggil dalam sesi saat ini, CURRVAL melaporkan nilai yang dikeluarkan untuk sesi ini, sehingga tidak ada yang perlu dilaporkan sampai ada nilai yang diambil.

Ringkaslah postingan ini dengan: