如何检查Fluent Migrator中是否存在序列

时间:2019-05-03 11:39:30

标签: c# .net oracle fluent-migrator

Fluent Migrator中创建之前是否可以检查序列是否存在?

这是我的代码:

IfDatabase("Oracle").Create.Sequence("SEQ_TEST").MaxValue(1).MaxValue(99999).StartWith(1).IncrementBy(1);

错误:

  

ORA-00955:名称已被现有对象提示所使用

我可以使用以下代码检查表格:

Schema.Table("TableTest").Exists()

但是我不知道如何检查序列,有什么办法吗? 任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

SEQUENCE是一个Oracle保留字,可能是问题所在。

答案 1 :(得分:0)

我使用SQL命令解决了问题

            Execute.Sql(@"
                DECLARE
                  VAR_SEQUENCE_EXIST VARCHAR(1);
                BEGIN

                  SELECT COUNT(1)
                    INTO VAR_SEQUENCE_EXIST
                    FROM USER_SEQUENCES
                   WHERE SEQUENCE_NAME = 'SEQ_TEST';

                  IF VAR_SEQUENCE_EXIST = 0 THEN       
                    -- Create sequence 
                    EXECUTE IMMEDIATE 'create sequence SEQ_TEST
                                        minvalue 1
                                        maxvalue 9999999999
                                        start with 1
                                        increment by 1
                                        nocache';
                  END IF;
                END;");