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.

