tipo - mysql establece el valor predeterminado del campo en otra columna
valor por defecto datetime mysql (2)
Como se documenta en Valores predeterminados de tipo de datos :
La cláusula de
DEFAULT value
en una especificación de tipo de datos indica un valor predeterminado para una columna. Con una excepción, el valor predeterminado debe ser una constante; no puede ser una función o una expresión. Esto significa, por ejemplo, que no puede establecer el valor predeterminado para una columna de fecha como el valor de una función comoNOW()
oCURRENT_DATE
. La excepción es que puede especificarCURRENT_TIMESTAMP
como predeterminado para una columnaTIMESTAMP
. Consulte la Sección 11.3.5, “Inicialización y actualización automáticas deTIMESTAMP
” .
En su lugar, puede definir un disparador de inserción:
CREATE TRIGGER foo BEFORE INSERT ON TSM_TRANSACTION_TBL FOR EACH ROW
IF NEW.REMAINING IS NULL THEN
SET NEW.REMAINING := NEW.MAX_VALUE - NEW.BOOKED_UNITS;
END IF;;
Cómo establecer el valor predeterminado para un campo a otra columna en Mysql Lo he hecho oracle con el campo virtual pero no sé cómo hacerlo en Mysql esta es mi tabla:
create table TSM_TRANSACTION_TBL
(
TRANS_ID INT primary key auto_increment,
LOCATION_ID INT,
TRANS_DATE DATE,
RESOURCE_ID INT,
TS_ID INT,
MAX_VALUE INT,
BOOKED_UNITS INT default 0,
REMAINING INT default MAX_VALUE - BOOKED_UNITS,
BOOKED INT not null,
USER_ID INT,
TRANS_TIME TIMESTAMP
)
El ''NUEVO'' es inaceptable para DESPUÉS de los activadores de inserción. Debe hacer la ''actualización de campo'' mediante un disparador de inserción ANTES de. Asi que,
CREATE TRIGGER foo BEFORE INSERT ON TSM_TRANSACTION_TBL FOR EACH ROW
IF NEW.REMAINING IS NULL THEN
SET NEW.REMAINING := NEW.MAX_VALUE - NEW.BOOKED_UNITS;
END IF;;