简单说一下楼上的问题吧,估计还会有人详尽解答
1 sequence是序列,但是不同于SQL SERVER indentity,是可以用PL/SQL,单独调用的,和表没有直接的关系,就是每调用一次sequence的值就会增加
SQL> select ASSETCATEGORIES_SEQ.nextval from dual;   NEXTVAL
----------
         1SQL> /
   NEXTVAL
----------
         2
SQL> /   NEXTVAL
----------
         32  先DROP后CREATE不是必须的,如果以前没有,可以不用DROP,目的是先清除掉前ASSETCATEGORIES_SEQ名称序列,不然后建立ASSETCATEGORIES_SEQ会报错误,这根据具体情况定了3  一般序列的用法 
INSERT INTO TABLE_NAME (ID,...) 
VALUES(ASSETCATEGORIES_SEQ.NEXTVAL,...)4  SQLSERVER不熟悉

解决方案 »

  1.   

    感谢benny_2008(banchao) 
    我是第一次弄这个东西,还是不清楚sequence的作用是什么?
      

  2.   

    sequence序列
    有点类是sqlserver得identitysqlserver中只要有个自定义增长列就可以了如果oracle中需要有个类似的列,就可以用序列
      

  3.   

    Oracle中的Sequence也就和Sql Server的identity差不多,都是一个自增量,每次用NEXT_VAL都可以得到一个新的增加过的值。一般主键生成可以考虑用这个
      

  4.   

    对,对一些不好定义主键的可以采用seq作为主键!
      

  5.   

    我是一个数据库新手,请大虾们赐教.
    我尽量说的详细点.
    drop sequence ASSETCATEGORIES_SEQ;
    create sequence ASSETCATEGORIES_SEQ;create table ASSETCATEGORIES (
       ID                   numeric(7)           not null,
       PARENTID             numeric(7)           null,
       CODE                 nvarchar(30)         not null,
       NAME                 nvarchar(30)         not null,
       REMARK               nvarchar(100)        null,
       constraint PK_AssetCate primary key  (ID)
    )
    go
    1)这个应该是ORACLE的东西,里面的sequence我在网上查了好多,说是序列,不是很明白是什么意思.我只知道SQL里indentity可以设置一个字段为自增的.
    2)这个为什么要先DROP,后CREATE呢?
    ---如果不删除有的,再建的时候不就冲突了么
       建表的时候也一样,自动导出的语句都是先删除,在创建
    3)这个ASSETCATEGORIES_SEQ,这里创建了一个,但是我不知道它什么时候用到的?
    还是这里只是创建了还没有用到?
    --这里只是创建,还没有用到
      ASSETCATEGORIES.id的值可以用序列来实现
      例如 insert into  ASSETCATEGORIES(id...)
           values(ASSETCATEGORIES_SEQ.nextval...)4)我的这段如果该成SQL的话要怎么改呢?
      sqlserver里面只要定义一个自增长的列就可以了,不用这么麻烦建序列的
      

  6.   

    zt
    Oracle里没有标识列这种说法的,只有序列;在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 
    1、Create Sequence 
    你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, 
    CREATE SEQUENCE emp_sequence 
    INCREMENT BY 1  -- 每次加几个 
    START WITH 1   -- 从1开始计数 
    NOMAXVALUE    -- 不设置最大值 
    NOCYCLE     -- 一直累加,不循环 
    CACHE 10;        --缓存序列个数,有助于提高效率,但可能造成跳号。一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL 
    CURRVAL=返回 sequence的当前值 
    NEXTVAL=增加sequence的值,然后返回 sequence 值 
    比如: 
    emp_sequence.CURRVAL 
    emp_sequence.NEXTVAL 可以使用sequence的地方: 
    - 不包含子查询、snapshot、VIEW的 SELECT 语句 
    - INSERT语句的子查询中 
    - NSERT语句的VALUES中 
    - UPDATE 的 SET中 可以看如下例子: 
    INSERT INTO emp VALUES 
    (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); SELECT empseq.currval FROM DUAL; 但是要注意的是: 
    - 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白? - 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 2、Alter Sequence 
    你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create . 
    Alter sequence 的例子 
    ALTER SEQUENCE emp_sequence 
      INCREMENT BY 10 
      MAXVALUE 10000 
      CYCLE   -- 到10000后从头开始 
      NOCACHE ; 
    影响Sequence的初始化参数: 
    SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。 可以很简单的Drop Sequence 
    DROP SEQUENCE order_seq; 
      

  7.   

    感谢icedut(冰).
    我现在要把这个改成SQL的,要怎么改呢?
      

  8.   

    SQLSERVER里面没有序列
    你是想把建表的语句改成sqlserverif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ASSETCATEGORIES ') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[ASSETCATEGORIES ]
    GOCREATE TABLE [dbo].[ASSETCATEGORIES ] (
    [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION  NOT NULL ,
    PARENTID             int(7)           null,
       CODE                 varchar(30)         not null,
       NAME                 varchar(30)         not null,
       REMARK               varchar(100)        null
    ) ON [PRIMARY]
    GOALTER TABLE [dbo].[ASSETCATEGORIES ] WITH NOCHECK ADD 
    CONSTRAINT [PK_ASSETCATEGORIES ] PRIMARY KEY  CLUSTERED 
    (
    [ID]
    ) WITH  FILLFACTOR = 90  ON [PRIMARY] 
    GO
      

  9.   

    alter table CONCRETEBOOKS modify STATE default 0;
    这句话的意思是修改 STATE 上的约束 ,约束名为 CONCRETEBOOKS,让其默认的值为0吗?
      

  10.   

    更改一下
    是修改表CONCRETEBOOKS上的列STATE,让其默认的值为0吗?