modify structure和alter table 的区别【vfp知识点】

求解答!~~~~这两个语句不是都能修改表的结构吗?有什么区别... 求解答!~~~~
这两个语句不是都能修改表的结构吗?有什么区别
展开
 我来答
燃烧生命0209
2013-08-29 · TA获得超过285个赞
知道小有建树答主
回答量:226
采纳率:100%
帮助的人:250万
展开全部
MODIFY STRUCTURE
显示表设计器,从而修改一张表的结构。

说明
在早期版本的 FoxPro 中,MODIFY STRUCTURE 打开表结构对话框。
如果在当前选定工作区中没有表打开,则显示打开对话框,从而选择要修改的表。
可以改变表的结构,包括添加和删除字段;修改字段名、宽度和数据类型;添加、删除或修改索引标识;以及对字段空值(null)的支持。

警告:
改变字段数据类型可能不能完全转换字段内容,或根本不转换。例如,如果将日期型字段转换为数值型,则字段内容不转换。

改变表的结构之前,Visual FoxPro 自动备份当前表。
当修改完成后,将备份表中包含的数据追加到新修改的表结构中。如果表中存在备注字段,也会创建一个备注备份文件。表备份文件为 .bak 扩展名,备注备份文件为
.tbk 扩展名。

如果接受结构的更改,然后中断数据复制过程,则新表不包含原表的所有记录。

请记住 Visual FoxPro 为原始表文件创建一个 .bak 文件,且如果表中存在备注字段,还会为原始备注文件创建一个 .tbk
文件。如果使用 MODIFY STRUCTURE 时出现任何问题,您可以删除新文件,并且将 .bak 文件和 .tbk
文件(如果存在)改名为原始文件扩展名(.dbf 和 .fpt)。

当修改一个存在备注字段的表结构时,备注文件块儿大小采用当前块儿大小的设置。您可以用 SET BLOCKSIZE
命令指定备注文件块儿大小。

ALTER TABLE - SQL 命令
以编程方式修改表结构。
说明
使用 ALTER TABLE 可以修改还没有添加到数据库中的表的结构。然而,在修改自由表时,如果包含了
DEFAULT、 FOREIGN KEY、 PRIMARY KEY、 REFERENCES 或
SET 子句,Visual FoxPro 将产生一个错误。

ALTER TABLE 可以通过建立新表头和向表头中添加记录来重建表。例如,改变字段类型和宽度可以使表重建。

表经过重建后,将对所有改变了类型或宽度的字段执行字段有效性规则。如果改变了表中所有字段的类型或宽度,将执行表的有效性规则。

如果修改已含有记录的表的字段有效性规则或表有效性规则,Visual FoxPro
将检查新的字段有效性规则或表有效性规则是否与已存在的数据相符合,并在发现的首个不符之处发出警告。

如果启用了字段的自动增量,则不能在 DEFAULT 子句中指定值或表达式。

要移去自动增量, 可以使用 ALTER TABLE - SQL 来修改 COLUMN 但不包括
AUTOINC 子句。

自动增量字段的字段验证将保持有效。你可能想用验证来返回一个新的自动增量值。

当你想修改一个不包含自动增量字段的表使其包含自动增量字段时,无论是使用 ALTER TABLE
或表设计器,自动增量都将开始于下一个添加的记录。表中已有的记录不会从第一条记录就用自动增量值更新。您需要确保结果中不会有冲突发生。

当使用 CREATE CURSOR 命令创建的 Visual FoxPro 临时表(cursors)时,ALTER
TABLE 可能产生不一致的结果。特别是,你在创建一个有特点的 Visual FoxPro
临时表时,如长字段名,这通常只在作为数据库容器中的表中才可用。ALTER TABLE
保存一个临时表的临时复制,因此适用于自由表的规则也适用,同时任何要求数据库支持的特点被取消或修改为不可用状态。因此,除非经过测试并知道结果,否则通常情况下应该避免在
Visual FoxPro 临时表(cursors)上使用 ALTER TABLE 。

如果省略 NULL 和 NOT NULL,当前的 SET NULL
命令设置决定字段是否允许空值(null)。但是,如果省略了 NULL 和 NOT NULL ,但是包括了 PRIMARY
KEY 或 UNIQUE 子句,Visual FoxPro 忽略当前的 SET NULL设置,并且字段默认为 NOT
NULL。

如果 CHECK 子句指定的有效性规则不允许在添加的记录中出现空的字段值,Visual FoxPro 将产生一个错误。

在使用主索引或候选索引的字段中,不允许 Null 值和重复记录。如果您使用 ADD COLUMN 创建一个支持 null
值的主索引或候选索引新字段,Visual FoxPro 不产生错误信息。但是,如果您试图输入一个 null 或重复值到主索引或候选索引字段中,Visual
FoxPro 将会产生一个错误。

注意:
使用带有 UNIQUE 选项的 CREATE TABLE – SQL 或 ALTER TABLE – SQL
命令创建候选索引(为了 ANSI 兼容),与带有 UNIQUE 选项的 INDEX 命令创建的索引是不同的。用带有
UNIQUE 选项的 INDEX 命令创建的索引允许重复的索引关键字;候选索引不允许重复的索引关键字。关于 INDEX
命令的 UNIQUE 选项的更多信息,请参见INDEX 命令。术语 CANDIDATE
和 UNIQUE 的作用类似,可以根据您的选择代替。
 
如果修改一个已经存在的字段,且主索引表达式或候选索引表达式由表中的字段组成,Visual FoxPro
检查字段是否包含空值(null)或重复记录。如果包含,Visual FoxPro 产生一个错误,并且表不会改变。

如果表被转换到另一个代码页,指定了 NOCPTRANS 的字段不会被转换。
nmxmym
2013-08-28 · TA获得超过260个赞
知道小有建树答主
回答量:521
采纳率:100%
帮助的人:318万
展开全部
modi 是vfp的命令,alter是 sql的命令
modi 是交互式的,alter是命令式的修改,在程序里可直接修改,不影响程序的执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式