The world's most popular open source database
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.

