DROP SEQUENCE

说明

删除一个序列

语法

drop_sequence ::=

参数

seqname

要删除的序列名

RESTRICT|CASCADE

  • RESTRICT默认选项,确保没有对象引用该序列时序列才可以被删除。
  • CASCADE任何引用该序列的对象都将被删除,包括表中列的默认值,check条件和域的默认值。

默认为RESTRICT

注解

DROP SEQUENCE 命令显式从数据库中删除一个序列生成器

示例

示例1: 删除序列

--  清理环境
DROP SEQUENCE seq1 CASCADE;
DROP TABLE tab1 CASCADE;


--  创建序列
CREATE SEQUENCE seq1;

--  创建表
CREATE TABLE tab1 (a INT, CHECK(a > NEXTVAL('seq1')));

--  违反约束值,插入失败
INSERT INTO tab1 VALUES (-1);
ERROR, INSERT的数据违反了关系TAB1上的约束TAB1_CHECK



SELECT * FROM tab1 ORDER BY a;
A(int)      |
总数目:0


--  删除序列
--  有约束依赖此序列,删除失败
DROP SEQUENCE seq1;
ERROR, 对象依赖无法删除用DROP ... CASCADE删除, Cannot drop sequence SEQ1 because other objects depend on it
	Use DROP ... CASCADE to drop the dependent objects too



--  强制删除序列
--  依赖此序列的约束一并被删除
DROP SEQUENCE seq1 CASCADE;

--  约束已被删除,插入成功
INSERT INTO tab1 VALUES(-1);


SELECT * FROM tab1 ORDER BY a;
A(int)      |
------------
-1          |
总数目:1


--  删除表
DROP TABLE tab1;