, NOT NULL, CHECK, DEFAULT, primary key 和 UNIQUE 子句在包含字段定义的圆括号中。
如果省略 NULL 和 NOT NULL, 当前的 SET NULL 设置决定字段是否允许 null 值。但是, 如果省略 NULL 和 NOT NULL 但包括了 primary key 或 UNIQUE 子句, Visual FoxPro 忽略当前的 SET NULL 设置, 并且字段的默认是 NOT NULL。
如果在 CHECK 中指定的有效性规则不允许在添
加的记录中的空字段 Visual FoxPro 产生一个错误。
在使用主索引和候选索引的字段中不允许 null 值和重复记录。但是, 如果你创建一个支持 null 值的主索引或候选索引 Visual FoxPro 不产生错误。如果你试图输入一个 null 或重复值到使用主索引或候选索引的字段中时 Visual FoxPro 产生一个错误。
注意 带 UNIQUE 选项的 CREATE TABLE – SQL 或 ALTER TABLE – SQL 命令创建候选索引用 (提供它是为了和 ANSI 兼容), 与带 UNIQUE 选项的 INDEX 命令创建的索引是不同的。用带 UNIQUE 选项的 INDEX 命令创建的索引允许重复的索引关键字; 候选索引不允许重复的索引关键字。关于 INDEX 命令的 UNIQUE 选项的详细信息, 参见 index 命令。
对于 NextValue, 空值被认为是 0 并至使 incrementing 开始于 0 + StepValue。
StepValue 增量值总是正向增加。如果你想要使用一个负的自动增量序列, 应该开始于一个负的 NextValue 值且步长向 0 靠近 StepValue 增量值。例如, 如果 NextValue 等于 -2147483647, 第一步产生值 -2147483646。
CREATE TABLE 能够识别所有 AFIELDS() 函数中可用的字段并在 StepValue 值大于零时打开表中的 autoincrementing。
示例
下面示例创建一个名为 mydata1 的新的数据库并执行以下任务
用 CREATE TABLE 来创建三个表 Salesman, Customer 和 Orders。
在第二个 CREATE TABLE 命令中, 用 foreign key 和 REFERENCES 子句在 Salesman 和 Order 表间创建一个固定的一对多关系。
在第三个 CREATE TABLE 命令中用 DEFAULT 子句创建默认值并为特定字段的数据输入用 CHECK 和 ERROR 子句建立商业规则。
用 MODIFY DATABASE 来显示三个表间的关系。
CLOSE DATABASES
CLEAR
CREATE DATABASE mydata1
用主键创建 Salesman 表。
CREATE TABLE Salesman ;
(SalesID c(6) primary key, ;
SaleName C(20))
创建 Customer 表并关系它到 Salesman 表。
CREATE TABLE Customer ;
(SalesID c(6), ;
CustId i primary key, ;
CustName c(20) UNIQUE, ;
SalesBranch c(3), ;
foreign key SalesId TAG SalesId REFERENCES Salesman)
创建 Orders 并用它的主键表关联到 Customer
并创建一些商业规则如默认值和检查。
CREATE TABLE Orders ;
(OrderId i primary key, ;
CustId i REFERENCES customer TAG CustId, ;
OrderAmt y(4), ;
OrderQty