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;
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