Oracle数据库中添加主外键的方法
在Oracle数据库中,主外键是维护数据完整性和约束的非常重要的概念。主键是指在表中唯一标识一条记录的字段或字段集合,而外键则是指在一个表中的某个字段或字段集合被用来关联另外一个表的主键。在这篇文章中,我们将探讨在Oracle数据库中添加主外键的方法。
1.创建表
我们首先需要在数据库中创建带有主键和外键的表。以下代码是一个示例表的创建语句:
CREATE TABLE book (
book_id NUMBER(5) PRIMARY KEY,
title VARCHAR2(50) NOT NULL,
author VARCHAR2(50) NOT NULL,
publisher VARCHAR2(50) NOT NULL,
publishing_date DATE NOT NULL,
price NUMBER(8, 2) NOT NULL
);
我们在这个示例中创建了一个名为“book”的表,其中“book_id”是主键。
2.创建指向主键的外键
在我们创建外键之前,我们需要确定我们要引用哪个主键。在我们的示例表中,我们选择引用主键“book_id”。
在创建外键之前,我们还需要创建一个包含所需列的其他表。以下代码是一个引用主键的外键的创建语句:
CREATE TABLE book_order (
book_order_id NUMBER(5) PRIMARY KEY,
book_id NUMBER(5),
order_date DATE NOT NULL,
quantity NUMBER(5) NOT NULL,
CONSTRNT fk_book
FOREIGN KEY (book_id)
REFERENCES book(book_id)
);
在这个示例中,我们创建了一个名为“book_order”的表,其中包含一个名为“book_id”的列。我们还在最后一行添加了外键约束。
3.测试外键
我们创建了外键之后,我们需要测试它是否有效。以下代码是一个测试的示例:
INSERT INTO book(book_id, title, author, publisher, publishing_date, price)
VALUES (1, ‘Database Systems’, ‘Jeffrey Ullman’, ‘Pearson’, TO_DATE(‘2018-01-01’, ‘yyyy-mm-dd’), 120.55);
INSERT INTO book_order(book_order_id, book_id, order_date, quantity)
VALUES (1, 1, TO_DATE(‘2018-02-01’, ‘yyyy-mm-dd’), 5);
如果您尝试插入一个与主键不匹配的值,则会出现以下错误:
ORA-02291: integrity constrnt (SCOTT.FK_BOOK) violated – parent key not found
这是因为外键约束防止无效的数据进入数据库,从而确保数据的完整性和准确性。
在Oracle数据库中,添加主外键是确保数据完整性和一致性的重要方面。通过创建主键和外键约束,我们可以确保插入的数据是有效和准确的。如果违反了主外键约束,Oracle会自动阻止将数据插入数据库表中。