因此,我正在嘗試創建一個觸發器,該觸發器將使用可用課程的數量更新TOTAL_CURSOS從我的表中呼叫的列TOTALES。當我在表中插入一個值時,觸發器就會發生CURSO。我的問題是我的int價值觀DURACION和COSTO.
這是我的觸發代碼:
CREATE TRIGGER [TR_CURSO] ON [CURSO] FOR INSERT
AS
UPDATE
TOTALES
SET
TOTAL_CURSOS = ( SELECT COUNT(CODIGO) FROM CURSO );
INSERT INTO BITACORA (
MOMENTO,
DESCRIPCION
)
VALUES (
SYSDATETIME(),
'SE INSERTO EL MAESTRO CON RFC DE: '
(SELECT RFC_I FROM INSERTED)
' DEL CURSO: '
(SELECT NOMBRE FROM INSERTED)
' CON COSTO DE: '
CAST(COSTO AS nvarchar(10) )
' CON FECHA DE: ' (GETDATE())
' CON LA DURACION DE: '
CAST(DURACION AS nvarchar(5))
'Y EL CODIGO DE: '
(SELECT CODIGO FROM INSERTED)
' POR EL USUARIO: '
CAST((CURRENT_USER) AS CHAR)
);
我目前遇到的問題是它無法將 DURACION 和 COSTO 識別為有效列。
這是我的 CURSO 表結構。
CREATE TABLE CURSO(
CODIGO CHAR(5) NOT NULL,
NOMBRE CHAR(40) NOT NULL,
COSTO INT NOT NULL,
FECHA_INI DATE NOT NULL,
DURACION INT NOT NULL,
RFC_I CHAR(13) NULL
);
CREATE TABLE TOTALES(
TOTAL_INSTRUCTORES INT NULL,
TOTAL_CURSOS INT NULL,
TOTAL_ESTUDIANTES INT NULL
);
CREATE TABLE BITACORA(
MOMENTO CHAR(30) NOT NULL,
DESCRIPCION CHAR(150) NOT NULL
);
uj5u.com熱心網友回復:
嘗試更簡單的陳述句并測驗它們是否按預期作業,然后將它們組合成更復雜的序列。在找到可行的解決方案之前,不要嘗試優化。
例如試試這個,改變這些:
CAST(COSTO AS nvarchar(10) )
' CON FECHA DE: ' (GETDATE())
' CON LA DURACION DE: '
CAST(DURACION AS nvarchar(5))
到:
CAST((SELECT COSTO FROM INSERTED.CURSO) AS nvarchar(10) )
' CON FECHA DE: ' (GETDATE())
' CON LA DURACION DE: '
CAST((SELECT DURACION FROM INSERTED.CURSO) AS nvarchar(5))
它可能有效,也可能無效。這個想法是通過采取小步驟找到有效的方法。
uj5u.com熱心網友回復:
您可以將從值插入更改為從選擇插入。
CREATE TRIGGER [TR_CURSO] ON [CURSO]
AFTER INSERT
AS
BEGIN
UPDATE
TOTALES
SET
TOTAL_CURSOS = ( SELECT COUNT(CODIGO) FROM CURSO );
INSERT INTO BITACORA (
MOMENTO,
DESCRIPCION
)
SELECT
SYSDATETIME() AS MOMENTO,
CONCAT (
'SE INSERTO EL MAESTRO CON RFC DE: ', RTRIM(RFC_I),
' DEL CURSO: ', RTRIM(NOMBRE),
' CON COSTO DE: ', COSTO,
' CON FECHA DE: ', GETDATE(),
' CON LA DURACION DE: ', DURACION,
'Y EL CODIGO DE: ', RTRIM(CODIGO),
' POR EL USUARIO: ', CURRENT_USER
) AS DESCRIPCION
FROM INSERTED;
END;
關于db<>fiddle 的演示在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/379316.html
標籤:sql sql-server
