CREATE TABLE EMPLOYEE (EMP_NO EMPNO NOT NULL
FIRST_NAME FIRSTNAME NOT NULL
LAST_NAME LASTNAME NOT NULL
PHONE_EXT VARCHAR(
HIRE_DATE DATE DEFAULT
DEPT_NO DEPTNO NOT NULL
JOB_CODE JOBCODE NOT NULL
JOB_GRADE JOBGRADE NOT NULL
JOB_COUNTRY COUNTRYNAME NOT NULL
SALARY SALARY NOT NULL
FULL_NAME COMPUTED BY (last_name ||
PRIMARY KEY (EMP_NO))
CHECK語句是給數據庫字段取值范圍加約束條件
如法炮制
IBLOCAL中的表包括
EMPLOYEE CUSTOMER DEPARTMENT EMPLOYEE_PROJECT
PROJECT SALES SALARY_HISCORY
各數據庫表中的內容如下
表
━━━━━━━━━━━━━━━━━━━━━━━━━━━
數據庫表名 表中內容
───────────────────────────
EMPLOYEE 雇員信息
CUSTOMER 客戶信息
DEPARTMENT 部門信息
EMPLOYEE_PROJECT 雇員負責的工程
PROJECT 工程信息
SALES 銷售信息
SALARY_HISTORY 雇員薪水調整的歷史信息
━━━━━━━━━━━━━━━━━━━━━━━━━━━
每個數據庫表中都定義了關鍵字段
CSDEMO程序中定義了一個數據庫模塊部件
在TDmEmployee中定義了一個TDatabase類型的部件──EmployeeDatabase
表
━━━━━━━━━━━━━━━━━━━━━━━
屬性 屬性值
───────────────────────
AliasName IBLOCAL
DatabaseName EmployeeDemoDB
KeepConnection True
LoginPrompt False
TransIsolation tiReadCommitted
Params USERNAME = SYSDBA
PASSWORD = masterkey
Connected True
━━━━━━━━━━━━━━━━━━━━━━━
AliasName屬性所指定的IBLOCAL
Connected為True表明
KeepConnection屬性為True
LoginPrompt 屬性為False
USERNAME = SYSDBA
PASSWORD = masterkey
TransIsolation屬性為tiReadCommitted表明
程序中EmployeeDatabase的應用還與事務控制等有關
在許多數據庫應用中都要在不同數據庫表之間相互切換
procedure TFrmViewDemo
begin
Screen
VaryingTable
VaryingTable
VaryingTable
VaryingTable
VaryingTable
Screen
end;
crHourglass型光標表明正在執行SQL查詢
在CSDEMO應用程序中
在該窗體中包含兩個TDBGrid對象
表
━━━━━━━━━━━━━━━━━━━━━
屬 性 屬 性 值
─────────────────────
DatabaseName EmployeeDemoDB
IndexFieldName Emp_No
TableName EMPLOYEE
━━━━━━━━━━━━━━━━━━━━━
表
━━━━━━━━━━━━━━━━━━━━━
屬 性 屬 性 表
─────────────────────
DatabaseName EmployeeDemoDB
IndexFieldName Emp_No
MasterFields Emp_No
MasterSource EmployeeSource
TableName SALARY_HISTORY
━━━━━━━━━━━━━━━━━━━━━
這兩個表之間存在兩種關系
● 連接關系
EmployeeTable的記錄變化時
● 數據一致性
對EmployeeTable中的Salary字段的值作修改必須反映到SalaryHistoryTable中
觸發器是在SQL服務器端執行的一段程序
下面是InterBase服務器上與Employee表相關的觸發器程序
Triggers on Table EMPLOYEE:
SAVE_SALARY_CHANGE
BEGIN
IF (old
INSERT INTO salary_history
(emp_no
VALUES (
old
user
old
(new
END
因為觸發器是相應於EMPLOYEE表上的數據修改由服務器自動觸發執行的
[
From:http://tw.wingwit.com/Article/program/Delphi/201311/25126.html