我知道Oracle的create table语法
CREATE TABLE MyTable(
id int primary key,
...
);
Run Code Online (Sandbox Code Playgroud)
这将创建一个MyTable使用int主键调用的表.所以,这里没什么新鲜的.
但我很难理解以下查询:
CREATE TABLE departament (
cod_dept INTEGER CONSTRAINT dept_key PRIMARY KEY,
dept_name CHAR(15) NOT NULL,
admission DATE NOT NULL,
localization CHAR(20))
Run Code Online (Sandbox Code Playgroud)
当我抬头对Oracle的SQL Developer软件departement的表,我可以看到4列:cod_dept,dept_name,admission和localization.在约束选项卡上,我也可以看到dept_key,但我对这可能意味着什么感到困惑.这里的dept_key目的是什么?
好的,似乎这是一种定义要添加到表中的约束名称的方法.我的下一个问题是你为什么不把它命名为主键列?从我所看到的,默认情况下Oracle似乎只为约束创建一个随机名称!
谢谢
编写时id int primary key,Oracle将创建主键约束以确保主键值的唯一性.所有约束都有名称,因此在这种情况下,Oracle会为此约束分配一个自动生成的名称.但您可以使用以下CONSTRAINT语法显式设置此约束的名称:
cod_dept INTEGER CONSTRAINT dept_key PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)
稍后可以使用此名称来引用约束,例如,删除或修改它:
ALTER TABLE department DROP CONSTRAINT dept_key;
Run Code Online (Sandbox Code Playgroud)
编辑: 约束名称在架构中是唯一的,因此Oracle不能仅使用主键列的名称作为约束名称.
| 归档时间: |
|
| 查看次数: |
292 次 |
| 最近记录: |