Questo non è così semplice come sembra, la funzione is_MEDIUMINT()
potrebbe facilmente diventare:
is_MEDIUMINT()
is_MEDIUMINT_NULL()
is_MEDIUMINT_NOTNULL()
is_MEDIUMINT_UNSIGNED()
is_MEDIUMINT_UNSIGNED_NULL()
is_MEDIUMINT_UNSIGNED_NOTNULL()
Poi si esegue nel problema di diversi tipi database, SQLite per esempio ha una sola INT
tipo mentre MySQL ha almeno 5 (TINYINT
, SMALLINT
, MEDIUMINT
, INT
, BIGINT
), senza contare alias (come INTEGER
, BOOL
, BOOLEAN
e SERIAL
) e f tipi di loat - che sarebbero ancora più difficili da implementare a causa dell'argomento di precisione variabile. Ricorda che sto ancora ignorando diverse funzionalità cruciali come UNIQUE
e Vincoli chiave esterna che potrebbero essere convalidati solo sul DB.
Non capisco perché pensi che tali funzioni sarebbero utili, perché se potessi impostare il tuo database per lavorare in modalità rigorosa e poi semplicemente provare ad inserire i valori, se la query fallisce sai qualcosa non va, citando il manuale MySQL:
In modalità nonstrict, quando un out-of-range valore viene assegnato a una colonna intero, MySQL memorizza il valore rappresenta la corrispondente endpoint del tipo di dati colonna gamma. Se si memorizza 256 in una colonna TINYINT o TINYINT UNSIGNED, MySQL memorizza 127 o 255, rispettivamente.
Qual è il punto di convalida del valore prima dell'inserimento?
if (is_MEDIUMINT($var)) {
$this->db->insert($anothervar);
}
else {
// do what?
}
se si sta cercando di evitare gli errori di eseguire la query in una transazione o utilizzare la sintassi INSERT OR IGNORE
.
fonte
2010-05-16 11:53:47
Nessuno sa questo? Non posso essere il primo a pensare che questo possa tornare utile! – Industrial
Il BOUNTY è acceso! – Industrial