Postata in: 'Reset contatore auto-increment chiave primaria in MySql'

Giacomo Barrile

Come già spiegatoti, facendo un aggiornamento sulla primary key come tu dici andresti a compromettere l'integrità referenziale della tabella in oggetto, è sbagliato sia logicamente che tecnicamente, quindi te lo sconsiglio fortemente. Se stai solo facendo dei test e delle prove, e vuoi resettare il contatore auto-increment

Pubblica
01-04-2019 16:10:49 0

Postata in: 'Campo int non tronca valore più lungo di N'

Giacomo Barrile

Il valore N specificato nella dichiarazione del tipo INT non ne indica la dimensione del campo, bensì la lunghezza di visualizzazione, se ad es. tu scrivi int(5) ed inserirsci un valore di 4 cifre, esso sarà visualizzato sempre con 5 caratteri ed il numero/i mancanti saranno riempiti con degli spazi vuoti (o con degli zeri se specific

Pubblica
01-04-2019 12:58:40 +1

Postata in: 'Creare un ID univoco in modo casuale come chiave primaria di una tabella'

Giacomo Barrile

Potresti utilizzare la funzione UUID() di MySQL, la quale restituisce un valore di 36 caratteri che può essere utilizzato come identificativo univoco, ovvero l'ID, una sorta di GUID per MySql. Se desideri necessariamente utilizzare un numero intero come ID, devi crearti una funzione ad hoc, una sorta di getRandomID() che dovrai richiama

Pubblica
26-03-2019 18:55:27 +1

Postata in: 'Ultima versione di MySql?'

Giacomo Barrile

Se non erro siamo giunti alla versione 8 di MySql, questa dovrebbe essere l'ultima in ordine di rilascio, però a livello produzione (lavorativo) la più diffusa è sicuramente la famiglia della versione 5, sicuramente la 5.1, la 5.5 e la 5.6 sono usatissime, mentre la 5.7 risulta migliorata ed ancor più per

Pubblica
15-12-2018 16:42:14 0

Postata in: 'Settare il numero max di righe in una tabella'

Giacomo Barrile

Con un trigger che verifichi il numero di records inseriti è sicuramente la soluzione ideale, se non hai confidenza con essi potresti anche lanciare da sistema uno script ad intervalli regolari che controlli il numero di records presenti nella tabella MySql e cancelli quelli in eccesso.

Pubblica
14-12-2018 17:06:56 -1

Postata in: 'Selezionare i records che non sono in una tabella'

Giacomo Barrile

Prova ad usare un LEFT JOIN dove i valori della seconda tabella (per la chiave primaria) siano null, con una sintassi sql del genere:SELECT Table1.* FROM Table1LEFT JOIN Table3 ON Table1.id = Table2.id WHERE Table2.id IS NULL;Il JOIN è molto veloce, e sicuramente più performante di eventuali sub-query. Penso che questo possa fare al c

Pubblica
11-12-2018 22:26:01 +2

Postata in: 'Come cancellare una tabella MySql?'

Giacomo Barrile

L'istruzione sql (query) per cancellare una tabella MySql è molto semplice, la sintassi è:DROP TABLE 'my_table'questo è quanto.

Pubblica
10-12-2018 18:17:40 +1

Postata in: 'Inserire un record nella tabella MySql solo se non esiste già'

Giacomo Barrile

Agganciandomi a quasto scritto da Giorgio, la sintassi sql per la INSERT IGNORE è:INSERT IGNORE INTO MyTable (my_column_PK,my_column_1,my_column_2) VALUES (1,'abc','def');se il record con valore della chiave primaria = 1 già esiste questa query sarà ignorata (0 rows affected) e non sarà restituito alcun errore da parte d

Pubblica
10-12-2018 17:51:50 0

Postata in: 'Vedere i permessi (grant) concessi agli utenti MySql'

Giacomo Barrile

Un metodo alternativo all'uso di show grants può essere questo:select * from information_schema.user_privileges where grantee like "'user'%";un grosso vantaggio di questo approccio è che verifica i privilegi (GRANT) assegnati agli utenti di un database MySql indipendentemente dall'host ed inoltre puoi verificare aggiungendo altre cond

Pubblica
13-07-2018 10:51:37 0

Postata in: 'Selezionare una sola riga (record) in modo random su un database MySql'

Giacomo Barrile

Potresti scrivere un qualcosa di simile:SELECT * FROM table WHERE id=CEIL(RAND() * (SELECT COUNT(*) FROM table)));questo presume però che la tua chiave primaria id non preveda salti, ossia sia incrementale e non abbia record cancellati, poichè potrebbe capitarti lo sfortunato caso che ritorni un insieme (riga) vuota.

Pubblica
12-07-2018 12:52:05 0

Postata in: 'Tracciare nuovi record inseriti in tabella MySql'

Giacomo Barrile

I triggers sono sicuramente il metodo migliore per scatenare azioni quando una tabella MySql viene cambiata a seguito di una insert, update o delete.Nel tuo caso quindi si adattano perfettamente alle tue esigenze, potresti creare un trigger che all'insert di un nuovo record esso vada a scrivere nella tabella log alla data odierna inserendolo come n

Pubblica
08-06-2018 11:22:42 +1

Postata in: 'Cambiare la collation di una Tabella ASCII ad una UTF8 Unicode in MySql'

Giacomo Barrile

Per cambiare Collation di una tabella MySql da ASCII a UTF-8, eccoti alcune osservazioni da tenere a mente:I tipi CHAR e VARCHAR possono occupare sino a 3 volte in più la dimensione di spazio su disco.Usa SET NAMES utf8 prima di scrivere e leggere dal database, diversamente potresti ottenere dei caratteri illeggibili poiché non ricono

Pubblica
07-06-2018 12:42:44 +1

Postata in: 'Campo booleano in Oracle'

Giacomo Barrile

Sebbene Oracle stesso usa il CHAR come tipo Boolean dal punto di vista logico a mio avviso la soluzione migliore è quella di usare un INT con i valori 0 e 1, questi risultano meglio trattabili poi a livello di linguaggio di programmazione.

Pubblica
30-05-2018 12:43:23 0

Postata in: 'Sintassi dell'istruzione CASE in Sql Server?'

Giacomo Barrile

Volendo fare un'esempio dell'uso del CASE in una query SELECT, potrebbe essere pressapoco cosi:SELECT columnCASE WHEN column=value1 THEN 1 WHEN column=value3 THEN 2 WHEN column=value3 THEN 3 WHEN column=value1 THEN 4 ELSE ''ENDFROM MyTable

Pubblica
29-05-2018 00:00:39 +1

Postata in: 'Inserire più valori con una sola update Mysql?'

Giacomo Barrile

Attenzione però che l'uso della INSERT ON DUPLICATE KEY come istruzione per l'aggiornamento dei dati può avere degli effetti collaterali indesiderati, bisogna precisare e ricordare che:Nel caso che la chiave primaria (possibilmente composta anche da più di un campo) sia nulla verrà inserito un nuovo valore e magari non &

Pubblica
28-05-2018 11:28:14 -2

Postata in: 'Quali caratteri mettere con escape quando si fa una query sql?'

Giacomo Barrile

Il modo migliore in PHP per gestire l'inserimento di una stringa all'interno di un database MySql ed evitare spiacevoli inconvenienti (o peggio) è far uso di questa comprovata funzioncinafunction quote_smart($value) { if (get_magic_quotes_gpc()) $value = stripslashes($value); if (!is_numeric($value)) $value = mysql_re

Pubblica
24-05-2018 11:36:16 +2

Postata in: 'E' possibile fare una SELECT su valori multipli della condizione WHERE?'

Giacomo Barrile

In aggiunta a quello detto puoi utilizzare anche l'operatore IN su una subquery, ovvero su un insieme di valori non determinato a priori ed estraibile ad es. da un'altra tabella, in questo modo:SELECT * from TABLE where field IN (SELECT values from TABLE2)

Pubblica
23-05-2018 16:01:40 0

Postata in: 'Inserire dati Binary in MySql'

Giacomo Barrile

I dati di tipo binary non vengono usati frequentemente in MySql, e questo a ragion veduta poiché potrebbero archiviare stringhe di byte particolarmente lunghe (quali immagini o un piccoli video) che con l'aumentare dei records appesentirebbero il motore del database facendone calare drasticamente le prestazioni in termini di velocità

Pubblica
23-05-2018 12:41:47 +2