Oracle 12C -- 基于sequence的列的默认值

12C支持先创建一个sequence,然后再将该sequence指定为某个列的值的默认表达式。

和"identity column"具有以下不同点:

·对列的个数没有限制

·sequence必须在列定义之前定义

·如果删除了sequence,会导致后面的insert报错

·表的owner,和使用者对该sequence必须有select权限

·可以手动插入、更新该列(不使用sequence产生的值)

SQL> drop sequence test_seq;
SQL> create sequence test_seq start with 1;
SQL> drop table sequence_test_tab;
SQL> create table sequence_test_tab(id number default test_seq.nextval);
SQL> insert into sequence_test_tab values(null);
SQL> insert into sequence_test_tab values(null);
SQL> insert into sequence_test_tab values(default);
SQL> insert into sequence_test_tab values(default);
SQL> insert into sequence_test_tab values(10000);
SQL> commit;

--结果显示可以插入null、字面值,而不使用sequence的值。插入default值的时候就使用sequence的值。
SQL> select * from sequence_test_tab;

        ID
----------

         1
         2
     10000

SQL> select count(*) from sequence_test_tab;

  COUNT(*)
----------
         5

SQL> 

--插入数据时,如果没有指定该列,也会使用sequence的值来默认插入
alter table sequence_test_tab add (col_2 number);
insert into sequence_test_tab(col_2) values(99);
SQL> select * from sequence_test_tab;

        ID      COL_2
---------- ----------

         1
         2
     10000
         3         99

6 rows selected.

SQL> 
时间: 2024-11-07 21:52:09

Oracle 12C -- 基于sequence的列的默认值的相关文章

为列增加默认值限制(Adding a default constraint)

我们可以为表中的某一列增加一个默认值,如上文中我们创建了tblPerson表,该表有GenderId列.我们可以使用下面的代码为该列增加默认值: Alter Table tblPerson Add Constraint DF_tblPerson_GenderId Default 3 For GenderId 同时我们也可以在为表增加新列的时候指定默认值,下面的代码为tblPerson增加一个地址列Address,同时为该地址指定了默认值"CHONGQING": Alter Table

constraint更新表列约束默认值

--更新约束 alter TABLE [dbo].[Sk_Recruit] drop constraint DF_Sk_Recruit_lastcommenttime go alter TABLE [dbo].[Sk_Recruit] add constraint DF_Sk_Recruit_lastcommenttime DEFAULT (getdate()) for [lastcommenttime] go constraint更新表列约束默认值

SQL Server2008为表的某列设置默认值为SQL Server函数

  例如,设置SQL Server函数GETDATE()作为默认值: SQL Server2008为表的某列设置默认值为SQL Server函数

设置DataGridViewComboBoxColumn列的默认值

因为工作需要,最近用到了DataGridViewComboBoxColumn,需要让它在DataGridView中显示时包含默认值.在网上查找过相关资料,对于我这种新手来说理解起来仍是困难,索性自己动手写了一个测试程序,若有说的不对的地方欢迎拍砖:-). DataGridViewComboBoxColumn列用于在DataGridView单元格中实现具有类似ComboBox的功能,就是可以从下拉框中选择需要显示在单元格中的内容.在设置默认值的时候,有两种情况:一是DataGridView显示时已

Oracle 12c 基于ASM 的单实例 搭建手册

从Oracle 10g开始,Oracle 开始推广ASM的使用,到了11g,RAC 集群已经必须使用ASM,所以对ASM的掌握程度也决定RAC的运维水平,这篇Blog 演示 Oracle12c 基于ASM 的单实例的的环境搭建. 这样即可以玩12c 的ASM,又不需要起2个集群,从而方便学习.具体环境搭建步骤如下. 1  安装需要的RPM 包 binutils-2.20.51.0.2-5.11.el6 (x86_64) glibc-2.12-1.7.el6 (x86_64) libgcc-4.4

Oracle 12c创建PDB用户并设置默认表空间

Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为 ContainerDatabase,中文翻译为数据库容器,PDB全称为PluggableDatabase,即可插拔数据库.下面是官方文档关于CDB与PDB的关系图. 在CDB中,只能创建以c##或C##开头的用户,如果不加c##,则会提示错误“ORA-65096:公用用户名或角色名无效”,只有在PDB数据库中才能创建我们习惯性命名的用户,oracle称之为Loca

Oracle 12C -- 在相同的列的集合上创建多个索引

在12C中,可以在相同的列的集合上创建多个索引,但是多个索引的类型要不同.同一时刻,只有一个是可见的. SQL> create table emp_tab as select * from emp; SQL> create index emp_tab_ix_01 on emp_tab(job,hiredate); --在创建另一个索引之前,要将上一步创建的索引变成invisible状态 SQL> alter index emp_tab_ix_01 invisible; SQL> c

oracle 12c中的隐含列

Invisible Columns 使用select * from ,desc 等看不到该列, DROP TABLE tab1 PURGE; CREATE TABLE tab1 ( id NUMBER, description VARCHAR2(50) INVISIBLE ); DESC tab1; Name Null? Type ----------------------------------------- -------- ---------------------------- ID

MySQL-timestamp列的默认值

1.在创建新记录和修改现有记录的时候都对这个数据列刷新 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 2.在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它 TIMESTAMP DEFAULT CURRENT_TIMESTAMP 3.在创建新记录的时候把这个字段设置为0,以后修改时刷新它 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 4.在创建新记录的时候把这个字段设