Arsip: Langkah Apa Saja Untuk Membuat Update-an DB MySQL?

more 13 years ago
babypigs
mohon saran dan bantuan teman2 sekalian ...
sedikit cerita pembukaan dulu, saya sedang membuat program untuk perusahaan tempat saya bekerja sekarang, menggunakan Delphi 7 + Zeos dan databasenya MySQL 5. program yang sudah saya buat sudah berjalan normal dan sudah dipakai oleh beberapa anak perusahaan tempat saya bekerja.
program yang saya buat selalu ada penambahan modul sesuai permintaan dari user rata2 satu minggu akan ada satu penambahan modul program. setiap ada penambahan modul kadang disertai penambahan tabel baru, field baru, juga beberapa isi record baru. dan setelah modul jadi saya harus mengupdate ke semua anak perusahaan saya. selama ini saya harus benar2 mencatat tabel2 baru apa saja harus saya tambahkan. field baru apa saja yg harus saya tambahkan ke tabel yg sudah ada, record baru apa saja yg harus saya tambahan untuk mendukung modul baru, dan semua benar saya kerjakan manual dan memakan waktu dan tenaga. soalnya saya tidak ingin menganggu record transaksi yang sudah berjalan sekarang. saya pernah menggunakan fasilitas backup dan restore mysqldump tapi tidak begitu membantu malah sering terjadi record transaksi yang sudah ada menjadi hilang.
yang ingin saya tanya langkah2 apa saja yg harus dilakukan untuk mengupdate database mysql yang sudah berjalan tanpa menganggu record transaksi yang sudah ada, pada kondisi antara lain:
- penambahan tabel baru
- penambahan field baru ke tabel yg sudah ada
- penambahan record baru
saya menginginkan semua nya dilakukan dalam satu modul update yang dibuat dengan Delphi, jadi hanya dengan satu tombol saja saya bisa melakukan semua pengupdate-an tanpa menganggu record2 yg sudah ada.
sebelum dan sesudahnya saya ucapkan banyak terimakasih ...

more 13 years ago
DelphiExpert
Mungkin yang diinginkan batch sql script.
Buat script yg hendak dieksekusi, misal: update092011.sql, isinya:
1. CREATE TABLE XXX IF NOT EXISTS ... // Create table baru
2. ALTER TABLE XXX ... // Tambah field ke existing table
3. INSERT INTO XXX ... // Penambahan record baru
Nah setelah itu lakukan testing internal ke database dummy / replika / development.
Setelah OK, tinggal eksekusi script tersebut di masing2 cabang...
Caranya?
1. Manual menggunakan MS-SQL admin lewat remote desktop atau sejenisnya
2. Tambahkan modul / fungsi khusus di aplikasi cabang untuk mengeksekusi sql script. File sql script dapat di bagikan* ke cabang dengan berbagai macam cara, misal cek & download dari FTP/HTTP server secara berkala dll, tentu disertai dengan info metadata atau hash agar tidak dieksekusi lebih dari sekali. Seingat saya Zeos memiliki komponen yg namanya TZScript (atau sejenisnya, lupa)

more 13 years ago
babypigs
@DelphiExpert: Mungkin yang diinginkan batch sql script. Buat script yg hendak dieksekusi, misal: update092011.sql, isinya: 1. CREATE TABLE XXX IF NOT EXISTS ... // Create table baru 2. ALTER TABLE XXX ... // Tambah field ke existing table 3. INSERT INTO XXX ... // Penambahan record baru Nah setelah itu lakukan testing internal ke database dummy / replika / development. Setelah OK, tinggal eksekusi script tersebut di masing2 cabang... Caranya? 1. Manual menggunakan MS-SQL admin lewat remote desktop atau sejenisnya 2. Tambahkan modul / fungsi khusus di aplikasi cabang untuk mengeksekusi sql script. File sql script dapat di bagikan* ke cabang dengan berbagai macam cara, misal cek & download dari FTP/HTTP server secara berkala dll, tentu disertai dengan info metadata atau hash agar tidak dieksekusi lebih dari sekali. Seingat saya Zeos memiliki komponen yg namanya TZScript (atau sejenisnya, lupa)terimakasih banget untuk pencerahannya ... dari petunjuk di atas saya membuat satu modul untuk update, yaitu membaca skrip sql dari file text. ada sedikit masalah dalam pembacaan skrip sql dari file text ini, yaitu jika dalam file text cuma ada satu skrip sql saja modul dapat berhasil melakuakan eksekusi perintah sql tersebut, tapi jika ada dua atau lebih perintah sql maka modul gagal melakukan eksekusi perintah sql yang kedua dan seterusnya. yang menjadi pertanyaan bagaimana cara penulisan skrip sql dalam file text, saya sudah menulis antar perintah berikutnya saya beri ; tapi modul selalu gagal membaca perintah kedua. begitu pula bagaimana syntax pembacaan file text dari Delphi saat ini saya menggunakan SQL.LoadFromFile saja. qUpdate.SQL.Clear; qUpdate.SQL.LoadFromFile('./Update/update.txt'); qUpdate.ExecSQL; terimakasih sebelumnya ...

more 13 years ago
babypigs
@mas_kofa: jangan pake ExecSQL mas,... tp pake BatchSQL.......terimakasih buat info nya ... saya sudah mencoba untuk pengecekan table sudah ada atau belom tidak masalah, lalu untuk pembuatan table baru juga tidak masalah, yg sedikit jadi masalah pengecekan field sudah ada atau belom, dari hasil hunting di google saya menemukan skrip seperti ini: IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ‘TEST’ AND COLUMN_NAME = ‘TEST_DATE’) BEGIN ALTER TABLE TEST ADD TEST_DATE DATETIME END cuma setelah dicoba ternyata masih ada error, dan kalau dilihat hanya untuk memeriksa satu field saja lumayan juga kalau saya punya beberapa field baru yang harus dicek. saya pernah membaca juga permasalahan ini di threadnya @mas_kofa cuma harus melakukan pengecekan kembali dengan bantuan delphi, apakah ada skrip alternatif untuk mengecek field yang sudah ada atau belum via skrip sql dan tidak bolak balik harus mengecek lewat delphi. terimakasih ...

more 13 years ago
mas_kofa
kalo solusi yg pernah saya pake seh........
1. kita buat suatu stored Procedure buat AddColumn terlebih dahulu
[sql]
DELIMITER $$
CREATE
PROCEDURE nama_database.AddColumnUnlessExists(IN dbName TINYTEXT,
IN tableName TINYTEXT,
IN fieldName TINYTEXT,
IN fieldDef TEXT)
BEGIN
IF NOT EXISTS (
SELECT * FROM information_schema.COLUMNS
WHERE column_name=fieldName
AND table_name=tableName
AND table_schema=dbName
) THEN
SET @ddl=CONCAT('ALTER TABLE ',dbName,'.',tableName,
' ADD COLUMN ',fieldName,' ',fieldDef);
PREPARE stmt FROM @ddl;
EXECUTE stmt;
END IF;
END$$
DELIMITER ;
[/sql]
2. Selanjut nya kita tinggal pake / panggil ja stored Procedure itu...
[sql]
CALL AddColumnUnlessExists(DATABASE(), 'tblproduct', 'new_field', 'varchar(32) null');
CALL AddColumnUnlessExists(DATABASE(), 'tblproduct', 'new_again', 'DATETIME');
[/sql]
Note : DATABASE() : adalah current database.....
S'Moga Sukses.......

more 13 years ago
babypigs
[quote:9ed716bc8a="mas_kofa"]kalo solusi yg pernah saya pake seh........
1. kita buat suatu stored Procedure buat AddColumn terlebih dahulu
[sql]
DELIMITER $$
CREATE
PROCEDURE nama_database.AddColumnUnlessExists(IN dbName TINYTEXT,
IN tableName TINYTEXT,
IN fieldName TINYTEXT,
IN fieldDef TEXT)
BEGIN
IF NOT EXISTS (
SELECT FROM information_schema.COLUMNS
WHERE column_name=fieldName
AND table_name=tableName
AND table_schema=dbName
) THEN
SET @ddl=CONCAT('ALTER TABLE ',dbName,'.',tableName,
' ADD COLUMN ',fieldName,' ',fieldDef);
PREPARE stmt FROM @ddl;
EXECUTE stmt;
END IF;
END$$
DELIMITER ;
[/sql]
2. Selanjut nya kita tinggal pake / panggil ja stored Procedure itu...
[sql]
CALL AddColumnUnlessExists(DATABASE(), 'tblproduct', 'new_field', 'varchar(32) null');
CALL AddColumnUnlessExists(DATABASE(), 'tblproduct', 'new_again', 'DATETIME');
[/sql]
Note : DATABASE() : adalah current database.....
S'Moga Sukses.......[/quote:9ed716bc8a]
mantep banget nih @mas_kofa satu masalah lagi selesai ...
tapi menemukan masalah baru lagi mudah2an ini yg terakhir untuk saat ini, berdasarkan ide stored proseducer dari @mas_kofa saya membuat juga untuk menginput record yang digunakan untuk mengisi tabel2 referensi dengan asumsi jika record sudah ada maka jangan diinsert, cuma beberapa kali mencoba dan nanya si oom google saya kepetok di penamaan table nya, ini skrip prosedur saya ...
DELIMITER $$
USE skb$$
DROP PROCEDURE IF EXISTS AddNewRecord$$
CREATE DEFINER=cpses_pihtn8p9al@localhost PROCEDURE AddNewRecord(IN dbName TINYTEXT,
IN tableName TINYTEXT,
IN field_1 VARCHAR(25),
IN field_2 VARCHAR(10),
IN field_3 VARCHAR(25),
IN field_4 VARCHAR(25))
BEGIN
IF NOT EXISTS (
SELECT FROM tableName
WHERE tableName.IdObjek=field_3
) THEN
INSERT INTO tableName(IdForm, IdBank, IdObjek, NmObjek) VALUES (field_1, field_2, field_3, field_4);
END IF;
END$$
DELIMITER ;
CALL AddNewRecord(DATABASE(), NamaTable, 'isi_field_1', 'isi_field_2', 'isi_field_3', 'isi_field_4');
waktu dipanggil setformcetak tidak dianggap sebagai nama dari table, bagaimana cara mendefinisikan nama table dalam kasus ini, sekali lagi terimakasih sebelumnya semoga belom bosa membantu saya ...

more 13 years ago
mas_kofa
u/ insert newRecord coba pake sintak REPLACE mas,..........yang berfungsi akan meng-update jika record sudah ada dan meng-Insert jika Record belum ada,
REPLACE INTO tbcoba VALUES(1, 2, 3, 4);
sintak diatas, diexecute berkali2 tidak akan error, dan record hanya bertambah satu kali jika sebelum nya belum ada, dan tidak akan bertambah jika sebelum nya sudah ada.........
Note : field_1 sebagai PK
more 13 years ago
babypigs
dari semua langkah2 di atas, cukup membantu proses update database yg sedang berjalan skr, tanpa menganggu data yg sedang sedang berjalan skr, untuk skr saya masih menggunakan via batch cmd dulu, belom lewat delphi tapi dengan ini sudah membantu cukup banyak, untuk semua yg sudah sumbang saran dan pikiran saya ucapkan banyak terimakasih ...
more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- Ask: Menunggu Proses Sempurna ?
by cyber_hecker in Tip n Trik Pemrograman more 19 years ago - nampilin kode ASCII mode DOS
by jarangkonek in OOT more 18 years ago - mo create project bareng, apa mungkin????
by sukuguci in Hal umum tentang Pascal Indonesia more 17 years ago - Steganografi
by kayla in Tutorial & Community Project more 15 years ago - Tolongin saya buat bel otomatis di delphi
by juniorie in Tip n Trik Pemrograman more 18 years ago - Select ... like ....
by asepolin in Hal umum tentang Pascal Indonesia more 16 years ago - nanya donks!!!!!!!!!!!!!!!!
by guntz in Tutorial & Community Project more 18 years ago - Delphi vs Ms.Access
by wiedhodho in Hal umum tentang Pascal Indonesia more 18 years ago - nyambungin aplikasi delphi dengan telepon rumah
by galfa in Network, Files, I/O & System more 15 years ago - Nanya... nilai 0 tidak kesimpan ke dalam tabel database
by debby in Tip n Trik Pemrograman more 17 years ago