Oracle primary key和unique key的区别与联系
primarykey与uniquekey都是唯一性约束,用来限制相同字段的插入 。但二者有很大的区别: 1.作为primarykey的1个或多个列必须为NOTNULL, 如果建表时此列设为NULL,在增加PRIMARYKEY时,列自动更改为NOTNULL。 而uniquekey约束的列可以为null,这是primarykey
primarykey与uniquekey都是唯一性约束,用来限制相同字段的值插入。但二者有很大的区别:
1.作为primarykey的1个或多个列必须为NOTNULL,
如果建表时此列设为NULL,在增加PRIMARYKEY时,列自动更改为NOTNULL。
而uniquekey约束的列可以为null,这是primarykey与uniquekey最大的区别。
2.一个表只能有一个primarykey(单列或多列,多列主键叫联合主键),但可以有多个uniquekey。
实例1:
createtablet(c1number(2),c2date,c3varchar2(5),c4int);
desct;
NameTypeNullableDefaultComments
————————————–
C1NUMBER(2)Y
C2DATEY
C3VARCHAR2(5)Y
C4INTEGERY
//
实例2:添加primarykey
altertabletaddconstraintt_pkprimarykey(c1,c2);
desct;
NameTypeNullableDefaultComments
————————————–
C1NUMBER(2)
C2DATE
C3VARCHAR2(5)Y
C4INTEGERY
我们看到,将c1,c2列设为联合主键后,他们变为notnull;
如果在建表时就指定了主键的话,主键列将会默认为notnull。
//
如果我们在添加一个primarykey,那么我们将会得到一个错误:
altertabletaddconstraintt_pk_2primarykey(c3,c4)
ORA-02260:tablecanhaveonlyoneprimarykey
//
实例3:添加uniquekey
altertabletaddconstraintunique_key_tunique(c3,c4);
实例4:添加数据
insertintot(c1,c2,c3,c4)
values(10,sysdate,’abc’,3);
1rowinserted
//
insertintot(c1,c2,c3,c4)
values(11,sysdate,’abc’,3);
ORA-00001:uniqueconstraint(SCOTT.UNIQUE_KEY_T)violated
我们看到,添加的第二条数据违反了刚刚创建的唯一键约束;
将unique_key_t删除,添加就能成功了。
实例5:删除uniquekey
altertabletdropconstraintunique_key_t;
insertintot(c1,c2,c3,c4)
values(11,sysdate,’abc’,3);
1rowinserted
//
实例6:删除primarykey
altertabletdropconstraintt_pk;
Tablealtered
//
desct;
NameTypeNullableDefaultComments
————————————–
C1NUMBER(2)Y
C2DATEY
C3VARCHAR2(5)Y
C4INTEGERY
删除主键约束后,c1,c2列由恢复了原来的默认值null。
//
3.其实primarykey也是uniquekey,被primarykey约束的列notnull,并且不允许重复
实例7:
truncatetablet;
Tabletruncated
//
altertabletaddconstraintt_pkprimarykey(c1,c2);
Tablealtered
//
insertintot(c1,c2,c3,c4)
values(1,to_date(’2011-01-01′,’yyyy-mm-dd’),’csdn’,10);
1rowinserted
//
insertintot(c3,c4)
values(‘china’,1);
ORA-01400:cannotinsertNULLinto(“SCOTT”.”T”.”C1″)
//
insertintot(c1,c2,c3,c4)
values(1,to_date(’2011-01-01′,’yyyy-mm-dd’),’csdn’,10);
ORA-00001:uniqueconstraint(SCOTT.T_PK)violated
这里,我们看到primarykeyt_pk变成了unique约束,证明了主键约束也是唯一约束。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

比特币投资热潮持续升温,比特币作为全球首个去中心化数字资产,其去中心化和全球流通性等特性备受关注。尽管中国曾是比特币最大市场,但政策影响导致交易受限。而如今,韩国成为全球主要比特币市场之一,引发投资者对其与国内比特币差异的疑问。本文将深入分析两国比特币市场的区别。韩、中比特币市场差异解析韩国与中国比特币市场的主要区别体现在价格、市场供需、汇率、法规监管、市场流动性和交易平台等方面:价格差异:韩国比特币价格通常高于中国,这种现象被称为“泡菜溢价”。例如,2024年10月下旬,韩国比特币价格一度

Nexo:不止是加密货币交易所,更是您的数字金融管家Nexo并非传统的加密货币交易所,而是更侧重于加密货币借贷的金融平台。它允许用户以加密货币为抵押获得贷款,并提供赚取利息的服务。虽然Nexo也提供加密货币买卖和兑换功能,但其核心业务是加密借贷。本文将深入探讨Nexo的运作模式及安全性,为投资者提供更全面的了解。Nexo的运作模式成立于2018年,总部位于瑞士楚格的Nexo,是数字金融领域的先驱。它区别于其他中心化交易所,更专注于提供全面的金融服务。用户无需出售资产即可进行加密货币的买卖、交易和

以太币与比特币区别显着。技术上,比特币用 PoW,以太币从 PoW 转向 PoS 。交易速度比特币慢,以太币快。应用场景里,比特币侧重支付存储,以太币支撑智能合约与 DApp 。发行上,比特币总量 2100 万枚,以太币无固定总量。安全方面各有挑战。市场价值上,比特币市值居首,两者价格波动都大,但因特性不同,以太币价格走势有独特之处 。

比特币:数字黄金还是炒股衍生品?深度解析其投资本质比特币作为一种新兴的投资方式,其价格波动剧烈,与股票市场交易规则存在相似之处,引发了人们对其投资本质的疑问:炒比特币究竟是否等同于炒股?本文将从定义、性质、发行机制等方面深入探讨,揭开比特币投资的神秘面纱。比特币与股票:本质区别答案是:炒比特币并不等同于炒股。比特币是一种去中心化的数字货币,属于数字资产或虚拟资产范畴,其交易完全由用户自主控制,采用点对点(P2P)传输模式,形成去中心化的支付系统。这一概念由中本聪于2009年提出。不同于传统货币,

多线程和异步的区别在于,多线程同时执行多个线程,而异步在不阻塞当前线程的情况下执行操作。多线程用于计算密集型任务,而异步用于用户交互操作。多线程的优势是提高计算性能,异步的优势是不阻塞 UI 线程。选择多线程还是异步取决于任务性质:计算密集型任务使用多线程,与外部资源交互且需要保持 UI 响应的任务使用异步。

豆包和DeepSeek的核心区别在于检索精度和复杂度。1. 豆包基于关键词匹配,简单直接,成本低,但精度低,仅适用于结构化数据;2. DeepSeek基于深度学习,能理解语义,精度高,但成本高,适用于非结构化数据。最终选择取决于应用场景和资源限制,精度要求不高则选豆包,追求高精度则选DeepSeek。

加密投资的恐惧、不确定性和怀疑:如何做出明智决策?许多加密投资者面临着“这是最后一个周期”的恐惧,以及对牛市持续时间的担忧,再加上来自他人的压力,这些因素共同导致了糟糕的投资决策。本文将探讨如何克服这些挑战,做出更明智的投资选择。潜在风险:注意力分散:盲目追逐热点,忽略核心资产的价值。悲观与犹豫:不确定性导致缺乏信心,无法长期持有,甚至退出市场。缺乏信念:对项目缺乏深入研究,无法应对市场波动。缺乏获利策略:因恐惧回调而提前清仓,错失潜在收益。应对策略:1.专注核心领域:

强化Debian系统上Oracle数据库的安全,需要多方面入手。以下步骤提供一个安全配置的框架:一、Oracle数据库安装与初始配置系统准备:确保Debian系统已更新至最新版本,网络配置无误,并安装所有必需的软件包。建议参考官方文档或可靠的第三方资源进行安装。用户与组:创建专用Oracle用户组(如oinstall,dba,backupdba),并为其设置合适的权限。二、安全限制设置资源限制:编辑/etc/security/limits.d/30-oracle.conf文
