Linux C编程一站式学习

代码:
-- 客户所属单位表
CREATE TABLE Unit (
    Id   INTEGER     PRIMARY KEY AUTOINCREMENT,
    City CHAR( 16 )  NOT NULL,
    Name CHAR( 32 )  NOT NULL,
    UNIQUE ( City, Name )
);

-- 客户表
CREATE TABLE Client (
    Id   INTEGER     PRIMARY KEY AUTOINCREMENT,
    U_Id INTEGER     NOT NULL
                     REFERENCES Unit ( Id ) ON DELETE NO ACTION
                                                ON UPDATE CASCADE,
    Name CHAR( 16 )  NOT NULL,
    Disable BOOLEAN     NOT NULL
                     DEFAULT FALSE,
    Note TEXT,
    UNIQUE ( U_Id, Name )
);

-- 客户视图 (编号, 城市, 单位, 姓名, 是否离职, 备注)
CREATE VIEW Client_View AS
       SELECT C.Id,
              U.City,
              U.Name AS Unit,
              C.Name,
              C.Disable,
              C.Note
         FROM Client AS C,
              Unit AS U
        WHERE C.U_Id = U.Id;

-- 客户视图插入时触发器
CREATE TRIGGER Client_View_I
    INSTEAD OF INSERT ON Client_View
    FOR EACH ROW
BEGIN
    BEGIN TRANSACTION
    -- ** 这里不知怎样写好 ** --
    -- 若新插入记录出现单位表中没有的城市和单位
    --     先在单位表中添加城市和单位
    -- 再添加客户表信息
    END;
END;

作者: 自由建客   发布时间: 2011-06-09