Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
此语句用于删除表中的所有行,但不删除表。
TRUNCATE TABLE table-name
TRUNCATE TABLE 语句从表中删除所有行,并且在后续同步时,不会就删除这些行通知 MobiLink 服务器。它等效于执行以下语句:
STOP SYNCHRONIZATION DELETE; DELETE FROM TABLE; START SYNCHRONIZATION DELETE;
在同步或复制涉及的数据库上应谨慎使用该语句。因为没有通知 MobiLink 服务器,所以这种删除可导致出现不一致的情况,而这种不一致会引起同步或复制失败。
执行 TRUNCATE TABLE 语句后,表结构、所有索引以及约束和列定义仍然存在,仅删除了数据。
如果影响表的语句已经由其它请求或查询引用,则 TRUNCATE TABLE 语句将无法执行。同样,当表被变更时,UltraLite 不会处理引用表的请求。此外,当数据库包含活动查询或未提交的事务时,您也无法执行 TRUNCATE TABLE 语句。
对于 UltraLite.NET 用户:除非也为所有数据对象(例如 ULDataReader)调用了 Dispose 方法,否则您将无法执行此语句。请参见ULBulkCopy.Dispose 方法 [UltraLite.NET]。
模式更改 如果模式更改同时开始,则语句将不会被释放。
如果表包含的列被定义为 DEFAULT AUTOINCREMENT 或 DEFAULT GLOBAL AUTOINCREMENT,则 TRUNCATE TABLE 将重置该列的下一个可用值。
一旦行被标记为以 TRUNCATE TABLE 删除,除非用户发出 ROLLBACK 语句,否则执行此操作的用户将无法再访问它们。但是,它们仍然可以从其它连接进行访问。使用 COMMIT 进行永久删除,从而使这些数据不能从所有连接进行访问。
如果同步已截断的表,则所有应用于表的 INSERT 语句都将优先于 TRUNCATE TABLE 语句。
以下语句从 Departments 表中删除所有行。
TRUNCATE TABLE Departments;
如果执行此示例,要确保执行 ROLLBACK 语句恢复您的更改。