primary_key.txt

来自「orale培训教材包括了所有的sql说明和实例」· 文本 代码 · 共 80 行

TXT
80
字号
-- 在建立表时用建立主键
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 + =
减小字号Ctrl + -
显示快捷键?