当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : sqlite,求级联插入方法
帖子发表于 : 2011-06-09 9:16 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
代码:
-- 客户所属单位表
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;


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译