Kadang-kadang,
Anda harus menyalin data antara tabel dengan kolom identik dan ada
variasi pernyataan SQL insert yang memungkinkan Anda melakukan itu,
disebut Insert Pilih. Tabel Anda berencana untuk memasukkan ke dalam harus sudah ada.
Menggunakan
database About.db sama dari tutorial sebelumnya, kita dapat menggunakan
SQLiteSpy untuk klik kanan kemudian Tampilkan Buat pernyataan pada
tabel peristiwa, itu output membuat perintah sql.
Sekarang mengambil teks ini dan mengubahnya jadi acara table menjadi table events2 dan ievent menjadi ievent2. Ini akan terlihat seperti ini:CREATE TABLE events2 (idevent int,tanggal int,idvenue int,ideventtype int,Teks description);
MENCIPTAKAN ievent2 INDEX pada events2 (tanggal, idevent, ideventtype, idvenue);
Sekarang jalankan bahwa dengan tombol F9. Anda sekarang memiliki acara dan events2 meja. Sekarang jalankan sql ini:masukkan ke events2 pilih * dari peristiwa
Itu akan menyalin setiap baris dalam peristiwa ke events2. Sekarang
standar SQL memiliki perintah yang disebut pilih menjadi yang
menciptakan meja untuk Anda dan kemudian menyalin baris, pada dasarnya
melakukan segala sesuatu yang kita lakukan di sini. Sintaks untuk itu adalahpilih * dari peristiwa ke peristiwa
Tapi SQLite tidak mendukung ini. Namun itu mendukung perpanjangan perintah tabel Buat disebut "Membuat Tabel sebagai pilih" yang tidak sama dengan pilih dalam. Jadi
mari kita gunakan ini untuk membuat events3 meja, yang seperti kejadian
2 memiliki kolom yang sama dan data sebagai peristiwa tabel.membuat tabel events3 sebagai pilih * dari peristiwa
Anda akan menemukan informasi lebih rinci tentang itu di SQLite ini Membuat Tabel web dokumentasi.Mempercepat Insert dengan Transaksi
Salah
satu hal yang menarik dengan database adalah seberapa cepat dapat
beberapa operasi SQL dilakukan, misalnya berapa banyak sisipan dapat
dilakukan dalam mengatakan kedua? Menggunakan transaksi untuk melakukan hal ini membantu, tapi apa transaksi?
Jika
Anda sedang menulis sql mengatakan uang bergerak dari rekening majikan
Anda ke dalam membayar hari, ada dua tindakan (update) terjadi di sini. Kita
akan melihat SQL untuk update di tutorial berikutnya, tetapi untuk
sekarang menerima bahwa itu mungkin untuk mengubah nilai dalam kolom
pada suatu baris dengan pernyataan pembaruan.
Jadi katakan Boss Anda membayar Anda $ 5.000 setiap bulan. Pada beberapa titik dalam jangka penggajian, dua tindakan berikut terjadi.
Hapus $ 5.000 dari rekening Bos.
Tambahkan $ 5000 ke account Anda.
SQL
untuk ini akan menjadi sesuatu seperti ini di mana tabel rekening
memiliki baris dengan keseimbangan dan kolom accountid dan Anda
accountid = 1503 dan bos Anda adalah 100:rekening pembaruan mengatur keseimbangan = keseimbangan-5000 di mana accountid = 100rekening pembaruan mengatur keseimbangan = saldo 5000 di mana accountid = 1503
Cukup
sederhana tapi bagaimana jika gagal setengah jalan setelah dikurangi
5000 dari saldo bos tapi gagal menambah 5000 dengan Anda. Mungkin baris Anda hilang atau alasan lain. Hal ini canggung karena uang yang hilang dan Anda belum dibayar. Ia meninggalkan database dalam keadaan tidak konsisten.
Cara
putaran ini adalah untuk membungkus kedua pembaruan dalam transaksi
yang log keadaan meja sebelum itu berubah dan memungkinkan untuk
digulung kembali.
Jika semua update berhasil maka transaksi dilakukan oleh sql "komit transaksi" perintah. Catatan di SQLite, alternatif "transaksi akhir" tidak persis sama.Coba ini perintah SQL di SQLiteSpy
Dengan
asumsi Anda masih memiliki events3 tabel yang dibuat oleh tabel buat
sebagai pilih perintah sebelumnya, jalankan SQL ini di satu pergi (atau
satu per satu jika Anda ingin tetapi dalam urutan itu).memulai transaksi;menghapus dari events3;pilih * dari events3;
Ini harus menunjukkan tidak ada hasil. Tabel events3 kosong. Jalankan * pilih dari events3, SQL lagi untuk menunjukkan hal ini. Hal ini masih kosong! Sekarang jalankan perintah ini:transaksi rollback;pilih * dari events3;
Dan meja Anda tidak lagi kosong. Semuanya dihapus dipulihkan nDengan rollback.
Itulah kekuatan rollbacks. Anda dapat menggunakannya sebagai semacam membatalkan. Tapi itu hanya bekerja jika Anda mulai melakukan transaksi pertama. Jika data Anda hilang.
Jika Anda melakukan banyak sisipan, membungkus mereka semua dalam transaksi. Ini mempercepat sisipan SQLite. Untuk lebih jelasnya lihat StackOverflow ini pertanyaan tentang mempercepat sisipan SQLite.Sebuah Tips pada Membuat Perubahan Berbahaya untuk Live data
Ini semua terlalu mudah untuk mendapatkan bosan tentang menjalankan update dan delete dari pernyataan di atas meja. Pertimbangkan
apa yang terjadi jika Anda melakukan hapus dari pernyataan untuk
menghapus semua catatan karyawan untuk David Bolton dan Anda lupa di
mana bagian dari sql. Jadi, bukannya mengetik:menghapus dari karyawan mana first_name = 'David dan last_name =' Bolton '
Anda sedikit menyadari dan hanya mengetik:menghapus dari karyawan
Bamn, kekacauan terjadi karena Anda baru saja menyapu bersih setiap karyawan, sekarang tidak akan Anda menjadi populer!
Pada
kenyataannya, di perusahaan-perusahaan besar, orang-orang yang dapat
melakukan perubahan tersebut sangat dikendalikan dan bahkan mereka
mungkin harus melompat melalui lingkaran untuk mendapatkan akses.
Tapi
Anda masih akan populer jika Anda menyapu bersih semua data uji
karyawan dalam database pengembang begitu sebaliknya, selalu menggunakan
transaksi ketika membuat perubahan ke data dalam database sql.
Anda
tidak dapat menggunakan transaksi untuk membuat perubahan struktural
untuk tabel, seperti menambahkan kolom, hanya untuk perubahan data,
seperti insersi atau delesi. Jadi, Anda harus melakukan ini, jalankan setiap baris satu per satu.memulai transaksi;pilih count (*) dari karyawan;menghapus dari karyawan mana first_name = 'David dan last_name =' Bolton ';pilih count (*) dari karyawan;
Dengan
asumsi Anda tidak mengacaukan dan hanya ada satu David Bolton, angka
kedua harus menjadi salah satu kurang dari yang pertama. Jika yang bekerja, maka Anda harus mengakhiri transaksi dengan ini:transaksi akhir
Jangan pernah melupakan ini, atau hal-hal tidak akan bekerja terlalu baik. Anda dapat melakukan transaksi akhir beberapa kali jika tidak yakin. Segera setelah transaksi saat ini berakhir, transaksi end lagi hanya akan menghasilkan kesalahan.
Dalam tutorial berikutnya saya akan kembali ke kode C dan melihat beberapa fungsi lainnya C di SQLite.
koleksi ilmu hikmah, kisahsufi,tasawuf,fengshui,maulid,desain grafis,batu akik,batu obsidian, paypal pay,za,pendanaan,RENTAL MOBIL proyek,investor,funder,kredit kpr,pinjaman multi guna ,pialang,wali amanat,SEWA MOBIL CIREBONtaxi online cirebondan lain-lain
koleksi ilmu-ilmu hikmah,kisah 2 tokoh sufi.teknologi tips n trik dll
Selasa, Juni 04, 2013
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar
stroom09@gmail.com