KomputerPangkalan data

"Perangkap" DML-Team Update MySQL

Setiap programmer, yang terpaksa bekerja dengan pangkalan data, berhadapan dengan DML-pengusaha (diterjemahkan dari Bahasa Inggeris - .. "Data Manipulation Language"), seperti Pilih, Insert, Padam dan Update. MySQL-transport juga menggunakan senjata semua arahan di atas.

Kenyataan-kenyataan ini secara logik bercakap mengenai pelantikannya - rekod memilih, memasukkan nilai-nilai baru, mengemaskini data sedia ada, lengkap, atau mengikut syarat-syarat yang dinyatakan, penyingkiran maklumat dalam pangkalan data. Bahan-bahan latihan teori diterangkan secara terperinci prinsip operasi setiap arahan dan sintaks mereka, tetapi tidak ada tempat menemui rujukan kepada masalah yang mungkin timbul dalam amalan semasa digunakan. Bahan ini akan setia kepada pertimbangan sebahagian daripada mereka.

Secara ringkas mengenai DML-penyata (Insert)

Sebelum meneruskan lagi, ia adalah perlu sekali lagi untuk menarik balik maklumat lanjut tentang maksud setiap fungsi. Kita akan mempunyai dua pengendali berminat dengan lebih terperinci: Insert dan Update, kerana ia bergantung kepada mereka memperolehi kesukaran utama dalam memproses jumlah data yang besar.

Anda mesti bermula dengan memasukkan arahan, dan kemudian beransur-ansur bergerak ke Update. sistem MySQL, seperti mana-mana pangkalan data moden yang lain, menggunakan operasi Selit untuk menambah rekod baru pada jadual yang sedia ada dalam pangkalan data. Sintaks operasi ini adalah sangat mudah dan mudah. Ia mengandungi senarai bidang yang akan diambil untuk nilai-nilai, destinasi - nama jadual - dan segera memperkenalkan senarai data. Setiap kali anda melakukan pangkalan data Insert akan dikemas kini dengan nilai-nilai baru.

kenyataan update

Walau bagaimanapun, dalam amalan, seringkali terdapat situasi bahawa untuk beberapa set data satu atau lebih nilai atribut yang perlu dikemaskini. Sebagai contoh, situasi di mana syarikat itu adalah pembaharuan dengan penamaan semula lagi jabatan-jabatan utama. Dalam kes ini, ia adalah perlu untuk membuat perubahan bagi setiap jabatan. Jika hanya menukar nama, maka masalah ini boleh diselesaikan dengan cepat. Walau bagaimanapun, jika mengubah coding setiap komponen keseluruhan pengeluaran, yang biasanya berfungsi sebagai kunci utama, iaitu, seterusnya, melibatkan perubahan kepada maklumat dan untuk setiap pekerja.

Update - DML-operator boleh digunakan untuk menyelesaikan masalah ini. server MySQL-, yang beroperasi dengan sebilangan besar penyertaan, dengan bantuan kenyataan maklumat, melaksanakan pertanyaan yang diperlukan dan menyelesaikan masalah. Tetapi kadang-kadang berlaku semasa kemas kini tidak cukup jelas dan sukar untuk menerangkan kerumitan. Itulah yang menyebabkan kesukaran rekod dikemaskini, akan dibincangkan dengan lebih lanjut.

Apa yang sedikit yang telah diperkatakan dalam teori ...

Maklumat pasukan, seperti yang dinyatakan di atas, digunakan untuk mengemas kini rekod yang sedia ada dalam jadual. Tetapi dalam amalan, pelanggan mengakses pelayan pangkalan data tidak sentiasa dikenali, terdapat satu set tertentu data dalam jadual atau tidak. Awal menyemak ketersediaan data di dalam pangkalan data untuk mengemaskini seterusnya keputusan dalam masa yang lama dan sisa keupayaan pelayan.

Untuk mengelakkan ini, dalam struktur pangkalan data MySQL khas - Insert * Update, di mana insert atau kemas kini boleh dilakukan secara bebas daripada satu sama lain. Itulah apabila jadual mempunyai entri untuk keadaan tertentu, akan dikemas kini. Jika syarat-syarat dipertimbangkan, data tidak akan dijumpai, MySQL-server dapat melaksanakan permintaan muat naik data.

data kemas kini apabila terdapat pendua

Satu komponen penting dalam Sisipan ini - permintaan kepada sistem pengurusan pangkalan data MySQL - «Pada Duplicate Kunci Update» awalan. Sintaks lengkap pertanyaan adalah seperti berikut: «masukkan ke dalam test_table (employer_id, nama) nilai ( 1, 'Abramov') pada kunci pendua maklumat LAST_MODIFIED = NOW (); ".

Permintaan tersebut boleh digunakan untuk merakam tindakan, sebagai contoh, menentukan perusahaan masa persimpangan laluan sejajar dengan mengira selang masa dan kelewatan pengesanan. Agar tidak membuat jadual Beberapa rekod, cukup untuk setiap pekerja untuk menyimpan rekod dengan pengemaskinian berterusan. Ini reka bentuk cek salinan membenarkannya.

Sebenarnya masalah ...

Perhatikan contoh di atas tindakan kakitangan pendaftaran di pintu masuk, kerana masalah ini adalah penggunaan samouvelichivayuschihsya (auto _ kenaikan) bidang, yang biasanya digunakan untuk mengisi nilai kunci primer (_ kunci utama). Jika anda menggunakan MySQL Update arahan dalam reka bentuk dengan memasukkan auto _ kenaikan, padang sentiasa meningkat.

Begitu juga, segala-galanya yang berlaku apabila menggunakan pembinaan penggantian dalam kes pengesanan pendua. "Auto-kenaikan" Nilai meningkat walaupun dalam kes di mana ia tidak diperlukan. Oleh kerana itu, masalah timbul nilai pas limpahan atau julat, yang kemudiannya membawa kepada kerosakan sistem pengurusan pangkalan data.

Kemungkinan besar masalah ini

Menerangkan masalah yang perlu dipertimbangkan Web-pemaju, kerana ia adalah yang paling biasa dalam sistem multi-user (laman web, portal, dan sebagainya. P.), Apabila sistem itu dilaksanakan sebilangan besar prosedur Insert dan Kemas kini MySQL.

PHP - rayuan kepada asas yang sering dilakukan. Oleh itu, untuk mencapai margin maksimum, ditakrifkan sebagai auto_increment, berlaku dengan pantas, dan dalam analisis masalah yang dihadapi untuk menubuhkan sebab hanya tidak akan berfungsi.

Oleh itu, pemaju digalakkan untuk menjadi perhatian kepada penggunaan reka bentuk pada kunci pendua dalam kemas kini arahan mysql. pilih - pertanyaan semasa mengakses pelayan pangkalan data akan bekerja tanpa kesilapan, tetapi penambahan rekod baru kepada pangkalan data adalah penuh dengan situasi yang tidak menyenangkan mendahului masa depan untuk masalah yang serius. Selain itu, ia adalah disyorkan untuk bidang auto-kenaikan mulanya memeriksa rekod mereka, dan kemudian memegang mereka dikemaskini.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ms.unansea.com. Theme powered by WordPress.