【发布时间】:2010-12-22 04:11:29
【问题描述】:
我使用 Oracle 创建了一个简单的数据库,它有几个表和一些约束,我正在使用 Access 2007 与数据库交互。
我的问题是我有一个名为“客户”的表,其中包含多个字段,最值得注意的是一个名为 CUSTID 的主键。
我有另一个名为“订单”的表,它使用“客户”中的主键作为外键。
显然,如果我尝试删除正在“订单”中使用的客户,我会在使用时收到错误消息。这意味着我必须删除引用客户的特定订单,然后我才能删除客户记录。
我知道“级联”应该删除与之关联的所有内容,我的问题是如何从 Access 中执行此操作?我对数据库的了解有限,但足以创建一个等等。
这更像是一种验证,只是在删除某些元组之前删除另一个元组很麻烦。
这是为 Oracle 创建的数据库:
--用于创建“干净”的石板 删除表项级联约束; 删除表客户级联约束; DROP TABLE CORDER 级联约束; 丢弃表论坛级联约束; 创建表项 ( 项目编号(4)不为空, 名称 CHAR(15) 非空, 类别 CHAR(15) 非空, 价格编号(8)不为空, CONSTRAINT ITEM_PK PRIMARY KEY (ITEMID) ); 插入项目值(1000,'CARROT SEEDS','PACKET SEEDS',2.99); 插入项目值 (2250,'ROSES','FLOWERS',5.99); 插入项目值(3300,'西红柿','包种子',2.99); 插入项目值(4050,'POTATOES','PACKET SEEDS',1.99); 创建表客户 ( 客户编号 (4) 不为空, FNAME CHAR(10) 非空, LNAME CHAR(10) 非空, 地址 CHAR(40) 非空, 城市字符(15)不为空, PCODE CHAR(7) 非空, CNUMBER NUMBER(11) 非空, 约束 CUSTOMER_PK 主键 (CUSTID) ); 插入客户价值(1010,'JAMIE','KEELING','149 OLD MANSFIELD ROAD','DERBY','DE214SA',07500966490); 插入客户价值(2020,'HELEN','DARLINGTON','27 MOORPARK AVENUE','ROCHDALE','OL113JQ',07890189802); 插入客户价值(3030,'STEVEN','SEGAL','123 FAKE STREET','OHIO','SE095BG',01559345467); 插入客户价值(4040,'BRUCE','WAYNE','17 LAKEVIEW CRESENT','CHICAGO','MN432BD',07500966490); 创建表绳 ( 订单号(4)不为空, 客户编号 (4) 不为空, SHIPADD CHAR(40) 非空, SHIPPCODE CHAR(7) 非空, 发货日期, 项目编号(4)不为空, 数量编号(3)不为空, 总数(8)不为空, 约束 ORDER_PK 主键(ORDERID), CONSTRAINT FK_CUSTOMER FOREIGN KEY (CUSTID) REFERENCES CUSTOMER(CUSTID), CONSTRAINT FK_ITEM FOREIGN KEY (ITEMID) REFERENCES ITEM(ITEMID) ); INSERT INTO CORDER VALUES (1000,1010,'149 OLD MANSFIELD ROAD','DE214SA','12-JAN-07',1000,100,100.00); INSERT INTO CORDER VALUES (2000,2020,'27 MOORPARK AVENUE','OL113JQ','04-NOV-10',2250,200,100.00); INSERT INTO CORDER VALUES (3000,3030,'123 FAKE STREET','SE095BG','30-OCT-08',3300,150,100.00); INSERT INTO CORDER VALUES (4000,4040,'17 LAKEVIEW CRESCENT','MN432BD','25-JUL-07',4050,125,100.00); 创建表论坛 ( FORUMID NUMBER(4) NOT NULL, 标题字符(30)不为空, 线程名 CHAR(30) 非空, 海报字符(20)不为空, 后日期, 约束 FORUM_PK 主键 (FORUMID) ); 插入论坛值(1001,'一般聊天','初学者问题','JAMIE KEELING','25-NOV-09'); INSERT INTO FORUM VALUES(2002,'OFF TOPIC','Favorite BAND','HELEN DARLINGTON','12-JAN-09'); 插入论坛值(3003,'一般聊天','何时收获?','布鲁斯韦恩','02-NOV-08'); 插入论坛值(4004,'OFF TOPIC','你住在哪里?','STEVEN SEGAL','13-JAN-08');【问题讨论】:
-
为什么所有这些 CHAR 列?将它们更改为 varchar2 列,因为 varchar2 列使用较少的空间,varchar2 列没有空白填充。
-
这只是为了让它工作,等它功能齐全后我会开始优化