如何给Oracle的数据添加默认值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何给Oracle的数据添加默认值相关的知识,希望对你有一定的参考价值。

我建的表这个字段不允许为空默认值为0,但是我在页面插入数据时没有这个字段,提示“无法将NULL插入”

方法和详细的操作步骤如下:

1、第一步,打开数据库连接,并显示创建的数据库,见下图,转到下面的步骤。

2、第二步,执行完上面的操作之后,展开要操作的数据库下的所有表,见下图,转到下面的步骤。

3、第三步,执行完上面的操作之后,右键单击要操作的表,然后选择[改变表]选项,见下图,转到下面的步骤。

4、第四步,执行完上面的操作之后,在要修改的字段的[默认]位置内单击,然后输入默认值,见下图,转到下面的步骤。

5、第五步,执行完上面的操作之后,单击[保存],设置字段默认值完成,单击“确定”按钮即可,见下图。这样,就解决了这个问题了。

参考技术A 就是给mm字段设置默认值啊,这个默认值就是gdyb21lqtciantvymt7qvq==chr(10)
",
gdyb21lqtciantvymt7qvq是字符1234,通过md5算法加密后得到的

为oracle数据库列创建表时如何使用默认主键作为序列值

【中文标题】为oracle数据库列创建表时如何使用默认主键作为序列值【英文标题】:How to use default primary key as a sequence value when creating table for oracle database columns 【发布时间】:2014-01-22 12:21:38 【问题描述】:

我们有一个工具,这个工具创建了一些插入脚本来在我们的 plsql 表中添加行。 这个脚本是不可修改的,我们看不到这个脚本。所以,

当数据行到来时(带有我们不知道结构的插入脚本),我们应该给出一个主键。我们可以使用触发器,但出于性能原因我们不想这样做。

下面的代码不起作用。

CREATE TABLE qname
  (
    qname_id integer NOT NULL default qname_id_seq.nextval PRIMARY KEY,
   );

有什么想法吗? 谢谢..

【问题讨论】:

“我们可以使用触发器,但出于性能原因我们不想这样做” - 您是否实际测量过性能影响? 我们当然应该考虑性能。该表将占用大量行并为所有这些行操作触发器。这很贵 Oracle 12 提供了一个使用身份列执行此操作的新选项:oracle-base.com/articles/12c/… 谢谢。这很有帮助。 【参考方案1】:

.nextval 不能用于表的默认值,这是通过TriggerSequence 当您想要任何人都可以轻松阅读/记住/理解的序列号时实现的。但是如果你不想通过这种方式管理ID Column(如qname_id),并且该列的值不是很大,你可以在创建表时使用SYS_GUID()来获得这样的Auto Increment。

CREATE TABLE qname 
(qname_id RAW(16) DEFAULT SYS_GUID() PRIMARY KEY,
name VARCHAR2(30));

(或通过修改列)

现在您的qname_id 列将接受“全局唯一标识符值”。 您可以通过忽略这样的 emp_id 列在表中插入值。

INSERT INTO qname (name) VALUES ('name value');

因此,它将向您的 qname_id 列插入唯一值。

【讨论】:

非常感谢,我们需要这样的解决方案。 总是欢迎,但请确保此 qname_id 列的总大小不会影响您的性能/大小要求,我说是因为您提到了一些性能问题。

以上是关于如何给Oracle的数据添加默认值的主要内容,如果未能解决你的问题,请参考以下文章

SQLSERVER 如何添加0或1的约束,默认是0

在sql创建数据库表时,如何为字段设一个默认值

mysql表字段默认值

怎么用SQL语句添加新字段并设置默认值

如何在Oracle表中默认添加加密的数据

mysql表字段默认值