📄 primary_key.txt
字号:
-- 在建立表时用建立主键
CREATE TABLE plsql101_product2 (
product_name VARCHAR2(25) PRIMARY KEY,
product_price NUMBER(4,2),
quantity_on_hand NUMBER(5,0),
last_stock_date DATE
)
;
CREATE TABLE plsql101_product3 (
product_name VARCHAR2(25),
product_price NUMBER(4,2),
quantity_on_hand NUMBER(5,0),
last_stock_date DATE,
PRIMARY KEY (product_name)
)
;
--建立良好的的主键--学生表
CREATE TABLE sm_student(
name varchar2(10) PRIMARY KEY,
depart varchar2(10),
birthday DATE,
dome varchar2(10));
--在建立表以后用ALTER TABLE ADD PRIMARY KEY,加主键
ALTER TABLE plsql101_product
ADD PRIMARY KEY (product_name);
ALTER TABLE plsql101_person
ADD PRIMARY KEY (person_code);
ALTER TABLE plsql101_purchase
ADD PRIMARY KEY (product_name,
salesperson,
purchase_date
)
;
--主键也是constraint,命名主键定义
DROP TABLE plsql101_product4;
CREATE TABLE plsql101_product4 (
product_name VARCHAR2(25),
product_price NUMBER(4,2),
quantity_on_hand NUMBER(5,0),
last_stock_date DATE,
CONSTRAINT pk_product4 PRIMARY KEY (product_name)
)
;
INSERT INTO plsql101_product4 VALUES('豆腐',10,12,NULL);
INSERT INTO plsql101_product4 VALUES(NULL,10,12,NULL);
--ORA-01400: 无法将 NULL 插入 ("SYSTEM"."PLSQL101_PRODUCT4"."PRODUCT_NAME")
--PK不可为 NULL
--主键可以disable吗?
ALTER TABLE plsql101_product4 DISABLE CONSTRAINT pk_product4;
INSERT INTO plsql101_product4 VALUES(NULL,10,12,NULL);
select * from plsql101_product4;
--主键可以enable吗?
ALTER TABLE plsql101_product4 ENABLE CONSTRAINT pk_product4;
ORA-02437: cannot validate (SCOTT.PK_PRODUCT4) - primary key violated
--原因是pk中已含有null.删除含有null的纪录。
ALTER TABLE plsql101_product4 ENABLE CONSTRAINT pk_product4;
INSERT INTO plsql101_product4 VALUES(NULL,10,12,NULL);
--主键可以drop吗?
ALTER TABLE plsql101_product4 DROP CONSTRAINT pk_product4;
INSERT INTO plsql101_product4 VALUES('飞机',9,12,NULL);
INSERT INTO plsql101_product4 VALUES(NULL,1.2,12,NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -