Postata in: 'Reset contatore auto-increment chiave primaria in MySql'
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
Postata in: 'Campo int non tronca valore più lungo di N'
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
Postata in: 'Creare un ID univoco in modo casuale come chiave primaria di una tabella'
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
Postata in: 'Ultima versione di MySql?'
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
Postata in: 'Settare il numero max di righe in una tabella'
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.
Postata in: 'Selezionare i records che non sono in una tabella'
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
Postata in: 'Come cancellare una tabella MySql?'
L'istruzione sql (query) per cancellare una tabella MySql è molto semplice, la sintassi è:DROP TABLE 'my_table'questo è quanto.
Postata in: 'Inserire un record nella tabella MySql solo se non esiste già'
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
Postata in: 'Come rinominare una tabella MySql?'
Inoltre quando rinomini una tabella in MySql, non perdi gli eventuali dati (record inseriti)
Postata in: 'Vedere i permessi (grant) concessi agli utenti MySql'
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
Postata in: 'Selezionare una sola riga (record) in modo random su un database MySql'
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.
Postata in: 'Tracciare nuovi record inseriti in tabella MySql'
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
Postata in: 'Cambiare la collation di una Tabella ASCII ad una UTF8 Unicode in MySql'
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
Postata in: 'Campo booleano in Oracle'
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.
Postata in: 'Sintassi dell'istruzione CASE in Sql Server?'
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
Postata in: 'Inserire più valori con una sola update Mysql?'
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 &
Postata in: 'Quali caratteri mettere con escape quando si fa una query sql?'
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
Postata in: 'E' possibile fare una SELECT su valori multipli della condizione WHERE?'
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)
Postata in: 'Inserire dati Binary in MySql'
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à