Al utilizar el motor de almacenamiento
MyISAM
, MySQL usa un bloqueo (lock)
extremadamente rápido de tablas, que permite múltiples
lecturas o una sola escritura. El mayor problema con este motor
de almacenamiento ocurre cuando se tiene un flujo constante de
actualizaciones y selecciones lentas de una sola tabla. Si éste
es el problema para algunas tablas, puede usar otro motor de
almacenamiento para ellas. Ver
Capítulo 14, Motores de almacenamiento de MySQL y tipos de tablas.
MySQL puede trabajar con tablas transaccionales y no
transaccionales. Para hacer el trabajo más facil con tablas no
transaccionales (donde no se puede deshacer una transacción si
algo va mal), MySQL tiene las siguientes reglas. Obsérvese que
estas reglas sólo se aplican
cuando no se está corriendo en modo SQL estricto o si se usa el
especificador IGNORE
para un
INSERT
o un UPDATE
.
Todas las columnas tienen valores por defecto. Obsérvese
que cuando se ejecuta en modo SQL estricto (incluyendo modo
SQL TRADITIONAL
), se debe especificar
cualquier valor para una columna NOT
NULL
.
Si se inserta un valor inapropiado o fuera de rango dentro
de una columna, MySQL atribuye a la columna el “ mejor
valor posible ” en vez de reportar un error. Para
valores numéricos, éste es el 0, el valor más pequeño
posible o el valor más grande posible. Para cadenas de
texto, puede ser una cadena vacía o el trozo de la cadena
más grande que quepa en la columna. Este comportamiento no
se aplica cuando se ejecuta en modo SQL estricto
TRADITIONAL
.
Todas las expresiones calculadas retornan un valor que puede
ser usado en vez de señalar una condición de error. Por
ejemplo, 1/0 devuelve NULL
. (Este
comportamiento puede ser cambiado usando el modo SQL
ERROR_FOR_DIVISION_BY_ZERO
).
Si se usa una tabla no transaccional, no debería usar MySQL para comprobar el contenido de la columna. En general, la manera más segura (y generalmente más rápida) es usar la aplicacion para asegurarse que se están pasando sólo valores legales a la base de datos.
Para más informacion acerca de esto, ver
Sección 1.7.6, “Cómo trata MySQL las restricciones (Constraints)” y Sección 13.2.4, “Sintaxis de INSERT
” o
Sección 5.3.2, “El modo SQL del servidor”.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.