sqlite,求级联插入方法

软件和网站开发以及相关技术探讨
回复
头像
自由建客
论坛版主
帖子: 13427
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

sqlite,求级联插入方法

#1

帖子 自由建客 » 2011-06-09 9:16

代码: 全选

-- 客户所属单位表
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;
回复

回到 “软件/网站开发”