Обновляемый просмотр
Добавлено: 20 сен 2006, 07:56
Есть базовая таблица, из которой необходимо запретить удаление.
Создан просмотр:
Удаление производится из родной таблицы. Почему?
Создан просмотр:
Код: Выделить всё
/******************************************************************************/
CREATE TABLE TBL_PRODUCT_REF (
ID DMN_PK NOT NULL /* DMN_PK = BIGINT NOT NULL */,
NAME DMN_NAME /* DMN_NAME = VARCHAR(80) DEFAULT ,
STAND_TIME DMN_INT /* DMN_INT = INTEGER DEFAULT 0 */,
IS_DELETE DMN_BOOLEAN /* DMN_BOOLEAN = SMALLINT DEFAULT 0 NOT NULL CHECK (VALUE IN (0, 1)) */
);
CREATE VIEW VW_TBL_PRODUCT_REF(
ID,
NAME,
STAND_TIME)
AS
select
ID,
NAME,
STAND_TIME
from
TBL_PRODUCT_REF
WHERE IS_DELETE=0;
ALTER TRIGGER VW_TBL_PRODUCT_REF_BD
AS
BEGIN
UPDATE TBL_PRODUCT_REF SET IS_DELETE = 1
WHERE (ID = OLD.ID);
END
ALTER TRIGGER VW_TBL_PRODUCT_REF_BI
AS
BEGIN
INSERT INTO TBL_PRODUCT_REF (
ID,
NAME,
STAND_TIME)
VALUES (
NEW.ID,
NEW.NAME,
NEW.STAND_TIME);
END
ALTER TRIGGER VW_TBL_PRODUCT_REF_BU
AS
BEGIN
UPDATE TBL_PRODUCT_REF
SET ID = NEW.ID,
NAME = NEW.NAME,
STAND_TIME = NEW.STAND_TIME
WHERE (ID = OLD.ID);
END