koleksi ilmu-ilmu hikmah,kisah 2 tokoh sufi.teknologi tips n trik dll

Selasa, Juni 04, 2013

Transaksi dan Sisipkan pilih

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.

Tidak ada komentar:

Posting Komentar

stroom09@gmail.com

KLINIK CENAYANG STROOM09

KLINIK CENAYANG STROOM09
KLINIK CENAYANG STROOM09

pengunjung

RENTAL MOBIL CIREBON

RENTAL MOBIL CIREBON
RENTAL MOBIL CIREBON,TAXI ONLINE CIREBON,SEWA MOBIL CIREBON MINAT HP/WA :089537731979

Total Tayangan Halaman