Saya mencoba membuat tabel dengan auto-incrementing primary key
di Sqlite3 . Saya tidak yakin apakah ini benar-benar mungkin, tetapi saya berharap hanya perlu menunjuk bidang lain.
Sebagai contoh:
CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));
Kemudian, ketika saya menambahkan nilai, saya berharap untuk hanya melakukan:
INSERT INTO people
VALUES ("John", "Smith");
Apakah ini mungkin?
Saya menjalankan di sqlite3
bawah cygwin
di Windows 7.
select rowid from people;
Ya, ini mungkin. Menurut FAQ SQLite :
sumber
Mulai hari ini - Juni 2018
Inilah yang dikatakan dokumentasi resmi SQLite tentang masalah ini (tebal & miring milik saya):
sumber
Sudahkah kamu membaca ini? Bagaimana cara membuat bidang AUTOINCREMENT.
sumber
Seseorang tidak boleh menentukan
AUTOINCREMENT
kata kunci dekatPRIMARY KEY
. Contoh pembuatan kunci utama autoincrement dan penyisipan:akan memberi:
sumber
Selain rowid, Anda dapat menentukan bidang kenaikan otomatis Anda sendiri tetapi tidak disarankan. Itu selalu menjadi solusi yang lebih baik ketika kita menggunakan rowid yang ditingkatkan secara otomatis.
Baca di sini untuk informasi rinci.
sumber
SQLite AUTOINCREMENT adalah kata kunci yang digunakan untuk menaikkan nilai bidang secara otomatis dalam tabel. Kita dapat menaikkan nilai bidang secara otomatis dengan menggunakan kata kunci AUTOINCREMENT saat membuat tabel dengan nama kolom tertentu untuk menaikkannya secara otomatis.
Kata kunci AUTOINCREMENT hanya dapat digunakan dengan bidang INTEGER. Sintaksis:
Penggunaan dasar kata kunci AUTOINCREMENT adalah sebagai berikut:
Untuk Contoh Lihat Di Bawah: Pertimbangkan tabel PERUSAHAAN yang akan dibuat sebagai berikut:
Sekarang, masukkan rekaman berikut ke dalam tabel TB_COMPANY_INFO:
Sekarang Pilih record
sumber
Saya tahu jawaban ini agak terlambat.
Tujuan saya untuk jawaban ini adalah untuk referensi semua orang jika mereka menghadapi tantangan jenis ini dengan SQLite sekarang atau di masa depan dan mereka mengalami kesulitan dengannya.
Sekarang, melihat kembali kueri Anda, seharusnya seperti ini.
Itu berhasil di pihak saya. Seperti itu,
Untuk berjaga-jaga jika Anda bekerja dengan SQLite, saya sarankan Anda untuk memeriksa DB Browser untuk SQLite . Bekerja pada platform yang berbeda juga.
sumber
Apa yang Anda lakukan sudah benar, tetapi sintaks yang benar untuk 'penambahan otomatis' harus tanpa spasi:
(Harap perhatikan juga bahwa saya mengubah varchar Anda menjadi string. Itu karena SQLite secara internal mengubah varchar menjadi string, jadi mengapa repot-repot?)
maka sisipan Anda harus, dalam bahasa SQL standar mungkin:
Meskipun benar bahwa jika Anda menghilangkan id, maka secara otomatis akan bertambah dan ditetapkan, saya pribadi lebih memilih untuk tidak mengandalkan mekanisme otomatis yang dapat berubah di masa mendatang.
Catatan tentang autoincrement: meskipun, seperti yang ditunjukkan banyak orang, ini tidak direkomendasikan oleh orang-orang SQLite, saya tidak suka penggunaan kembali ID otomatis dari record yang dihapus jika autoincrement tidak digunakan. Dengan kata lain, saya suka bahwa id dari rekaman yang dihapus tidak akan pernah muncul lagi.
HTH
sumber