Archivio

Archivio per la categoria ‘MySQL, DB Server’

MySQL 5, utilizzo dei TRIGGER

11 July 2008 maxgrante Nessun commento

Finalmente trovo il tempo di pubblicare un articolo… :-)

Vediamo di seguito l’utilizzo dei TRIGGER in mysql 5, se non dico male infatti sino alla versione 5.0.x i TRIGGER su mysql non erano disponibili.

Prima di tutto, a cosa servono i TRIGGER? I TRIGGER hanno il principale scopo di automatizzare determinate operazioni sul database all’occorrenza di determinati eventi come INSERT, UPDATE o DELETE.

Il modo con cui creare un TRIGGER è piuttosto semplice:

CREATE TRIGGER setnoprice BEFORE UPDATE ON prodotto
FOR EACH ROW
BEGIN
IF NEW.online = ‘no’ THEN
SET NEW.prezzo = 0;
END IF;
END

Analizziamo cosa fa di fatto questo TRIGGER, al di là della sintassi:

Ipotizziamo di avere ad esempio un sito di e-commerce dal quale i prodotti sono acquistabili esclusivamente quando il loro prezzo è maggiore di zero, mentre sono online altri prodotti per il quale esiste una presentazione ma l’acquisto può essere fatto contattando l’ufficio commerciale e non viene esposto il prezzo.

Conseguentemente quando un prodotto va offline è automatico che non sia più vendibile. La soluzione più classica e semplice (apparentemente) è quella di gestire l’operazione direttamente da backoffice dell’applicativo in modo automatico o peggio ancora di delegare al gestore del backoffice il fatto di resettare a zero il prezzo quando un prodotto va offline.

[Piccolo inciso, so benissimo che potrebbe essere bloccato l'acquisto oltre che per prezzo a zero anche nel caso il flag online sia off, così come so che il prodotto non sarebbe nemmeno visualizzato, ma un'esempio lo dovevo fare... :-D ]

Entrando nel dettaglio mysql applicando questo TRIGGER si preoccupa di eseguire PRIMA [BEFORE] dell’azione UPDATE [solo update quindi] la verifica se online diventerà uguale a off e in tal caso forza il nuovo valore di prezzo a zero.

In sostanza il TRIGGER va a sostituire quelle operazioni automatiche che normalmente vengono delegate all’applicativo.

Per maggiori informazioni potete consultare direttamente il manuale di mysql alla pagina relativa ai TRIGGER.

Convertire un database PostgreSQL in MySQL e viceversa

La conversione di un database PostgreSQL in mysql e viceversa non è un’operazione esattamente banale.
Nel senso che a differenza della conversione da SQL Server a mysql o da Access ad esempio, per i quali esiste il tool realizzato direttamente da mysql, mysql Migration Toolkit, per PostgreSQL questo software non ci aiuta.

Durante la ricerca di qualcosa di ben funzionante mi sono imbattuto in:

DB Convert for mysql and PostgreSQL 2.0.x

Questo software consente in modalità trial di importare solo 10 record per tabella. E’ sufficiente nel caso sia necessario solo ripristinare la struttura, nel caso import di dati invece risulta insufficiente.

Per poter disporre delle funzionalità complete è sufficiente acquistarlo ad una cifra ragionevole di 69 dollari.

Il software dopo l’installazione consente una comoda migrazione di tutto quanto. La migrazione può essere bidirezionale.

La stessa software house propone altri tool come il sync.

Sono disponibili inoltre migrazioni da svariati altri database.

Per maggiori informazioni: http://www.dbconvert.com

Novita’ partizionamento su MySQL 5.1

3 January 2008 maxgrante Nessun commento

A partire dalla versione 5.1 mysql supportera’ praticamente per tutti i tipi di storage engine il partizionamento.

La versione 5.1 di mysql e’ al momento in release candidate.

Spero che nell’arco di 3/4 mesi possa uscire la prima release stabile.

Il partizionamento rappresenta una novita’ per il design di database in mysql molto forte e utile, soprattutto quando i record sono tanti.

Vi rimando ad un articolo stupendo che spiega benissimo (in inglese, ma e’ facile… :-D ) i vantaggi che si possono ottenere lavorando con i partizionamenti.

My-SQL-Partitions

Ciao. Maxgrante
info[AT]massimo-caselli[DOT]com

MySQL, eseguire una INSERT che esegua update in caso di valori duplicati

3 December 2007 maxgrante 6 commenti

In mysql, ma più in generale con l’SQL è possibile far eseguire al database una INSERT che, nel caso vi sia un duplicato con i valori passati, provveda ad eseguire un’UPDATE sul database.

Ad esempio:

$sql = “INSERT INTO tbl SET
a = 2,
b = 2,
c = 10

ON DUPLICATE KEY UPDATE b = b + “.$b;

In questo caso se una chiave primaria o più genericamente un indica UNIQUE dovesse verificare la presenza di un valore duplicato verrà eseguito un UPDATE che aggiorna il campo ‘b’ sommandogli il valore di $b.

Ciao. Maxgrante
info[AT]massimo-caselli[DOT]com

SQL Yog, un tool per la gestione di MySQL Server

30 November 2007 maxgrante 2 commenti

Recentemente stanco di utilizzare il solito phpmyadmin (sempre valido ed eccezionale) ho deciso di provare qualche programma per la gestione di mysql alternativo.

Ho scoperto un ottimo tool in versione opensource che si chiama SQL Yog.

Lo potete trovare e scaricare dal sito ufficiale: http://www.webyog.com

La versione community è davvero molto valida ed affidabile. Di fatto presenta tutte le caratteristiche tipiche di questi programmi, ma rispetto a molti altri che ho provato in passato garantisce davvero un’ottima affidabilità.

Di seguito alcune tra le caratteristiche più interessanti:

  • Possibilità di creare viste, stored procedure
  • Ottima funzionalità di import/export dal classico dump
  • Tool per table diagnostics
  • Valida gestione dei permessi
  • Editing il linea dei dati presenti nelle tabelle

Segnalo inoltre per chi fa un uso professionale di questi strumenti che esiste una versione Enterprise del costo di 70 euro + IVA circa per una licenza che permette alcune cosette davvero carine:

  • Tunnelling SSH
  • Tunnelling SSL
  • Synchronization e Migration Toolkit da diversi database quali Oracle, SQL Server, Access etc…
  • Query autocompletion
  • Query builder
  • Schema designer

Ciao. Maxgrante
info[AT]massimo-caselli[DOT]com