de-vraag
  • 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
 Ben
Ben
Question

Bagaimana cara membuat urutan di MySQL?

Saya mencoba membuat urutan di MySQL (saya sangat baru mengenal SQL secara keseluruhan). Saya menggunakan kode berikut ini, tetapi menyebabkan kesalahan:

CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;

ORDID mengacu pada bidang dalam tabel yang saya gunakan. Bagaimana cara membuat urutan dengan benar?

Edit:

Diduga, MySQL tidak menggunakan urutan. Saya sekarang menggunakan kode berikut ini, tetapi ini juga menyebabkan kesalahan. Bagaimana cara memperbaikinya?

CREATE TABLE ORD (
ORDID NUMERIC(4) NOT NULL AUTO_INCREMENT START WITH 622,
//Rest of table code

Edit:

Saya pikir saya menemukan perbaikannya. Untuk phpMyAdmin (yang saya gunakan) Anda dapat menggunakan kode berikut.

ALTER TABLE ORD AUTO_INCREMENT = 622;

Saya tidak tahu mengapa ia lebih memilih ini, tetapi jika ada orang lain yang membutuhkan bantuan dengan ini maka ini dia. :)

21 2014-10-26T21:43:44+00:00 3
 Ben
Ben
Pertanyaan edit 26 Oktober 2014 в 11:29
Pemrograman
sql
mysql
sequence
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
 pupitetris
pupitetris
10 September 2015 в 3:20
2015-09-10T15:20:09+00:00
Lebih
Sumber
Sunting
#25918748

Ini adalah solusi disarankan oleh manual MySQl:

Jika expr diberikan sebagai argumen untuk LAST_INSERT_ID(), nilai dari argumen argumen dikembalikan oleh fungsi dan diingat sebagai nilai berikutnya yang akan dikembalikan oleh LAST_INSERT_ID(). Hal ini dapat digunakan untuk mensimulasikan sekuens:

Buat tabel untuk menyimpan penghitung urutan dan inisialisasikan:

mysql> CREATE TABLE sequence (id INT NOT NULL); mysql> INSERT INTO sequence VALUES (0);

Gunakan tabel untuk menghasilkan nomor urut seperti ini:

mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1); mysql> SELECT LAST_INSERT_ID();

Pernyataan UPDATE menambah penghitung urutan dan menyebabkan pemanggilan berikutnya ke LAST_INSERT_ID() untuk mengembalikan nilai yang diperbarui. Pernyataan Pernyataan SELECT mengambil nilai itu. Fungsi mysql_insert_id() C API juga dapat digunakan untuk mendapatkan nilai. Lihat Bagian 23.8.7.37, "mysql_insert_id()".

Anda dapat membuat urutan tanpa memanggil LAST_INSERT_ID(), tetapi utilitas Kegunaan menggunakan fungsi dengan cara ini adalah nilai ID akan dipertahankan di server sebagai nilai terakhir yang dihasilkan secara otomatis. Ini ini aman bagi banyak pengguna karena beberapa klien dapat mengeluarkan pernyataan UPDATE pernyataan dan mendapatkan nilai urutan mereka sendiri dengan pernyataan SELECT (atau mysql_insert_id()), tanpa mempengaruhi atau terpengaruh oleh klien lain yang menghasilkan nilai urutan mereka sendiri. klien lain yang menghasilkan nilai urutan mereka sendiri.

32
0
Solution / Answer
 Daileyo
Daileyo
26 Oktober 2014 в 10:12
2014-10-26T22:12:06+00:00
Lebih
Sumber
Sunting
#25918747

Lihat artikel ini. Saya yakin ini akan membantu Anda mendapatkan apa yang Anda inginkan. Jika tabel Anda sudah ada, dan sudah memiliki data di dalamnya, kesalahan yang Anda dapatkan mungkin disebabkan oleh auto_increment yang mencoba menetapkan nilai yang sudah ada untuk record lain.

Singkatnya, seperti yang telah disebutkan orang lain dalam komentar, urutan, seperti yang dipikirkan dan ditangani di Oracle, tidak ada di MySQL. Namun, Anda mungkin dapat menggunakan auto_increment untuk mencapai apa yang Anda inginkan.

Tanpa detail tambahan pada kesalahan spesifik, sulit untuk memberikan bantuan yang lebih spesifik.

UPDATE

CREATE TABLE ORD (
  ORDID INT NOT NULL AUTO_INCREMENT,
  //Rest of table code
  PRIMARY KEY (ordid)
)
AUTO_INCREMENT = 622;

Tautan ini juga membantu untuk menjelaskan penggunaan auto_increment. Mengatur nilai AUTO_INCREMENT tampaknya menjadi opsi tabel, dan bukan sesuatu yang ditentukan sebagai atribut kolom secara khusus.

Juga, sesuai salah satu tautan dari atas, Anda dapat secara alternatif mengatur nilai awal kenaikan otomatis melalui alter ke tabel Anda.

ALTER TABLE ORD AUTO_INCREMENT = 622;

UPDATE 2 Berikut ini link ke contoh sqlfiddle yang berfungsi, menggunakan auto increment.
Semoga info ini membantu.

 Daileyo
Daileyo
Jawaban edit 27 Oktober 2014 в 6:15
25
0
Dato Janez
Dato Janez
31 Maret 2016 в 10:48
2016-03-31T10:48:52+00:00
Lebih
Sumber
Sunting
#25918749

Dengan membuat tabel kenaikan Anda harus sadar untuk tidak menghapus baris yang dimasukkan. alasannya adalah untuk menghindari penyimpanan data bodoh yang besar di db dengan ID di dalamnya. Jika tidak, jika mysql restart, ia akan mendapatkan baris maksimal yang ada dan melanjutkan kenaikan dari titik itu seperti yang disebutkan dalam dokumentasi http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html

3
0
Related communities 1
MySQL & MariaDB Indonesia
MySQL & MariaDB Indonesia
8 283 pengguna
Group belajar, diskusi, dan berbagi tentang DBMS MySQL dan MariaDB. Disclaimer: This group is not in any affiliation nor maintained by Oracle or www.mysql.com.
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 2 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi