您想知道如何在Access 2003中使用ON UPDATE CASCADE/ON DELETE CASCADE,ON UPDATE SET NULL/ ON DELETE SET NULL吗?

本文介绍如何在Access 2003的adp及ANSI92 mdb数据库中实现ON UPDATE CASCADE/ON DELETE CASCADE功能。通过设置数据库兼容性和使用存储过程或查询,可以成功创建外键约束并实现级联操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

您想知道如何在Access   2003中使用ON   UPDATE   CASCADE/   ON   DELETE   CASCADE,ON   UPDATE   SET   NULL/   ON   DELETE   SET   NULL。  
      
  根据我的测试,ON   UPDATE   CASCADE/   ON   DELETE   CASCADE   能够在adp   数据库和ANSI92   mdb数据库中正常使用,然而,ON   UPDATE   SET   NULL/   ON   DELETE   SET   NULL在adp   数据库和ANSI92   的mdb数据库中都提示语法错误。  
      
  以下的信息供您参考:  
      
  第一步:把mdb数据库设为ANSI92数据库  
  =========================  
  1.   打开mdb数据库  
  2.   点击Tools   ->   Options   ->   Tables/Queries   ->   SQL   Server   Compatible   Syntax   (ANSI92)   ->   This   database   ->   OK.    
      
      
      
  第二步:在adp   或ANSI92   mdb数据库中使用ON   UPDATE   CASCADE/   ON   DELETE   CASCADE:  
      
  方法一:在Query   Designer   中创建存储过程  
  -----------------------------------------------  
  1.   打开adp   数据库。  
  2.   点击Objects   下的Queries  
  3.   创建一个新的存储过程StoredProcedure1,   切换到SQL   View.   输入以下代码:  
      
  Create   PROCEDURE   StoredProcedure1  
      
  AS  
      
  CREATE   TABLE   Customers   (CustId   INTEGER   PRIMARY   KEY,   CLstNm   NCHAR   VARYING(50))  
      
  RETURN    
      
  4.   创建新的存储过程StoredProcedure2,   切换到SQL   View.   输入以下代码:  
      
      
  CREATE   PROCEDURE   StoredProcedure2  
  AS  
                        
  CREATE   TABLE   Orders   (OrderId   INTEGER   PRIMARY   KEY,   CustId   INTEGER,   OrderNotes   NCHAR   VARYING   (255),   CONSTRAINT   FKOrdersCustId   FOREIGN   KEY   (CustId)   REFERENCES   Customers   ON   UPDATE   CASCADE   ON   DELETE   CASCADE)  
      
  RETURN    
      
  注意:   如果是mdb   数据库,那应该创建两个新的Query.  
      
  Query1   为以下代码:  
      
  CREATE   TABLE   Customers   (CustId   INTEGER   PRIMARY   KEY,   CLstNm   NCHAR   VARYING(50))  
      
  Query2   为以下代码:  
      
  CREATE   TABLE   Orders   (OrderId   INTEGER   PRIMARY   KEY,   CustId   INTEGER,   OrderNotes   NCHAR   VARYING   (255),   CONSTRAINT   FKOrdersCustId   FOREIGN   KEY   (CustId)   REFERENCES   Customers   ON   UPDATE   CASCADE   ON   DELETE   CASCADE)  
      
      
      
  方法二:创建新的module   并输入以下代码:  
  ------------------------------------------  
      
  Function   test()  
                                
      
                        Dim   sqlstr   As   String  
      
                        Dim   conn   As   ADODB.Connection  
      
                        Set   conn   =   CurrentProject.Connection  
                            
      
                          sqlstr1   =   "   CREATE   TABLE   Customers1   (CustId   INTEGER   PRIMARY   KEY,   CLstNm   NCHAR   VARYING(50))"  
      
                          sqlstr2   =   "CREATE   TABLE   Orders1   (OrderId   INTEGER   PRIMARY   KEY,   CustId   INTEGER,   OrderNotes   NCHAR   VARYING   (255),   CONSTRAINT   FKOrdersCustId1   FOREIGN   KEY   (custid)   REFERENCES   customers1   ON   UPDATE   CASCADE   ON   DELETE   CASCADE   )"  
      
      
                          conn.Execute   sqlstr1  
                            
                          conn.Execute   sqlstr2  
                            
      
                          Application.RefreshDatabaseWindow  
      
                          conn.Close  
      
  End   Function  
      
  我将会继续测试ON   UPDATE   SET   NULL/   ON   DELETE   SET   NULL.   如果有新的进展,   我会尽早让您知道.    
  [/CHAPTER]  
CREATE TABLE IF NOT EXISTS user ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, avatar VARCHAR(255) DEFAULT '/images/default-avatar.jpg', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, role ENUM('ADMIN', 'MEMBER') DEFAULT 'MEMBER', status ENUM('ACTIVE', 'PENDING', 'BLOCKED') DEFAULT 'PENDING' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS activity ( id BIGINT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT NOT NULL, start_time DATETIME NOT NULL, end_time DATETIME NOT NULL, location VARCHAR(255), created_by BIGINT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (created_by) REFERENCES user(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS blog ( id BIGINT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, author_id BIGINT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, visibility ENUM('PUBLIC', 'PRIVATE', 'FRIENDS_ONLY') DEFAULT 'PUBLIC', FOREIGN KEY (author_id) REFERENCES user(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS friendship ( user_id BIGINT NOT NULL, friend_id BIGINT NOT NULL, status ENUM('PENDING', 'ACCEPTED', 'BLOCKED') DEFAULT 'PENDING', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, friend_id), FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE, FOREIGN KEY (friend_id) REFERENCES user(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 这是你之前给出的数据库sql文件
06-24
我已经建好了数据库只需链接即可-- 创建数据库并设置字符集 CREATE DATABASE IF NOT EXISTS `warehouse_management_system` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE `warehouse_management_system`; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for goods -- ---------------------------- DROP TABLE IF EXISTS `goods`; CREATE TABLE `goods` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '货名', `storage` int NOT NULL COMMENT '仓库', `goodsType` int NOT NULL COMMENT '分类', `count` int NULL DEFAULT NULL COMMENT '数量', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE, -- 添加外键约束 CONSTRAINT `fk_goods_storage` FOREIGN KEY (`storage`) REFERENCES `storage` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_goods_type` FOREIGN KEY (`goodsType`) REFERENCES `goodstype` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for goodstype -- ---------------------------- DROP TABLE IF EXISTS `goodstype`; CREATE TABLE `goodstype` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分类名', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for menu -- ---------------------------- DROP TABLE IF EXISTS `menu`; CREATE TABLE `menu` ( `id` int NOT NULL, `menuCode` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '菜单编码', `menuName` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '菜单名字', `menuLevel` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '菜单级别', `menuParentCode` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '菜单的父code', `menuClick` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '点击触发的函数', `menuRight` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '权限 0超级管理员,1表示管理员,2表示普通用户,可以用逗号组合使用', `menuComponent` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, `menuIcon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for record -- ---------------------------- DROP TABLE IF EXISTS `record`; CREATE TABLE `record` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `goods` int NOT NULL COMMENT '货品id', `userId` int NULL DEFAULT NULL COMMENT '取货人/补货人', `admin_id` int NULL DEFAULT NULL COMMENT '操作人id', `count` int NULL DEFAULT NULL COMMENT '数量', `createtime` datetime NULL DEFAULT NULL COMMENT '操作时间', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE, -- 添加外键约束 CONSTRAINT `fk_record_goods` FOREIGN KEY (`goods`) REFERENCES `goods` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_record_user` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `fk_record_admin` FOREIGN KEY (`admin_id`) REFERENCES `user` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for storage -- ---------------------------- DROP TABLE IF EXISTS `storage`; CREATE TABLE `storage` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '仓库名', `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '账号', `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名字', `password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码', `age` int NULL DEFAULT NULL, `sex` int NULL DEFAULT NULL COMMENT '性别', `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话', `role_id` int NULL DEFAULT NULL COMMENT '角色 0超级管理员,1管理员,2普通账号', `isValid` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT 'Y' COMMENT '是否有效,Y有效,其他无效', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of goodstype -- ---------------------------- INSERT INTO `goodstype` VALUES (1, '电子产品', '手机、电脑、平板、单反'); INSERT INTO `goodstype` VALUES (2, '医疗用品', '感冒药、退烧药、止疼药'); INSERT INTO `goodstype` VALUES (3, '生活用品', '牙刷、毛巾、洗面奶'); -- ---------------------------- -- Records of storage -- ---------------------------- INSERT INTO `storage` VALUES (1, '上海仓库', '上海各区仓库管理'); INSERT INTO `storage` VALUES (2, '杭州仓库', '杭州各区仓库管理'); INSERT INTO `storage` VALUES (3, '苏州仓库', '苏州各区仓库管理'); -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, 'admin', '超级管理员', 'root', 18, 1, '13215227869', 0, 'Y'); INSERT INTO `user` VALUES (2, 'sa', '管理员', 'root', 19, 0, '13215223466', 1, 'Y'); INSERT INTO `user` VALUES (3, 'gaze', '用户1', '123456', 29, 1, '13215228462', 2, 'Y'); INSERT INTO `user` VALUES (4, 'marin', '用户2', '123456', 18, 1, '18866669998', 2, 'Y'); INSERT INTO `user` VALUES (5, 'susic', '用户3', '123456', 22, 0, '13700000044', 2, 'Y'); INSERT INTO `user` VALUES (6, 'suke', '用户4', '123456', 32, 1, '18866669998', 1, 'Y'); -- ---------------------------- -- Records of menu -- ---------------------------- INSERT INTO `menu` VALUES (1, '001', '管理员管理', '1', NULL, 'Admin', '0', 'admin/AdminManage.vue', 'el-icon-s-custom'); INSERT INTO `menu` VALUES (2, '002', '用户管理', '1', NULL, 'User', '0,1', 'user/UserManage.vue', 'el-icon-user-solid'); INSERT INTO `menu` VALUES (3, '003', '仓库管理', '1', NULL, 'Storage', '0,1', 'storage/StorageManage', 'el-icon-office-building'); INSERT INTO `menu` VALUES (4, '004', '物品分类管理', '1', NULL, 'Goodstype', '0,1', 'goodstype/GoodstypeManage', 'el-icon-menu'); INSERT INTO `menu` VALUES (5, '005', '物品管理 ', '1', NULL, 'Goods', '0,1,2', 'goods/GoodsManage', 'el-icon-s-management'); INSERT INTO `menu` VALUES (6, '006', '记录管理', '1', NULL, 'Record', '0,1,2', 'record/RecordManage', 'el-icon-s-order'); -- ---------------------------- -- Records of goods -- ---------------------------- INSERT INTO `goods` VALUES (1, '牙刷', 2, 3, 198, '名牌'); INSERT INTO `goods` VALUES (2, '华为手机', 1, 1, 1008, '只限今年售卖'); INSERT INTO `goods` VALUES (3, '止疼药', 3, 2, 10933, '处方开药'); -- ---------------------------- -- Records of record -- ---------------------------- INSERT INTO `record` VALUES (1, 2, 4, 1, 9, '2023-02-16 15:26:02', '半价'); INSERT INTO `record` VALUES (2, 1, 3, 1, 99, '2023-02-16 15:26:29', '名牌'); INSERT INTO `record` VALUES (3, 3, 5, 1, 999, '2023-02-16 15:27:04', '医生处方'); INSERT INTO `record` VALUES (4, 3, 4, 1, -65, '2023-02-16 15:28:06', '急需'); SET FOREIGN_KEY_CHECKS = 1;
06-21
我将开发一个大学生实习就业系统,工作任务如下: 系统开发使用Java语言,开发模式采用SpringBoot后台开发和Vue前端框架相结合。系统功能角色包括系统管理员(学校端管理)、学生(学生端模块)和企业(企业招聘管理模块)三个部分。企业招聘管理模块的内容包括系统首页、在线招聘、学生认证、创建简历、简历投递、在线招聘、就业指导、问卷调查等。学校端管理员教师审核企业的平台注册信息,并针对企业上传的招聘信息进行审核,审核通过的信息学生方可看见。负责班级学生实习情况统计,学院领导可查看学院全体学生的实习等。实习系统学生端模块学生通过系统浏览企业发布的招聘岗位,在线制作或上传简历并投递到心仪的企业,参加线上企业招聘会。在企业面试成功、签订协议后,由学校端管理模块对学生协议签订和实际求职情况进行审核,审核通过后,学生可上岗。 我打算使用若依前后端分离版本进行开发,现在我已经搭建好了若依脚手架。在角色管理中创建好了,students和Boss两个角色。 当前我已经建立了学生信息表、学院信息表、班级信息表。 表结构如下: -- ---------------------------- -- Table structure for class_info -- ---------------------------- DROP TABLE IF EXISTS `class_info`; CREATE TABLE `class_info` ( `class_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '班级ID(主键)', `class_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班级名称(格式如:计算机2021级1班)', `college_id` bigint(20) NOT NULL COMMENT '所属学院ID(外键)', `class_teacher` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '班主任姓名', `student_count` int(11) NULL DEFAULT 0 COMMENT '班级学生人数(统计字段)', `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`class_id`) USING BTREE, INDEX `idx_college_id`(`college_id`) USING BTREE, CONSTRAINT `fk_class_college` FOREIGN KEY (`college_id`) REFERENCES `college_info` (`college_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '班级信息表' ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; -- ---------------------------- -- Table structure for college_info -- ---------------------------- DROP TABLE IF EXISTS `college_info`; CREATE TABLE `college_info` ( `college_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '学院ID(主键)', `college_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学院名称(唯一)', `college_leader` varchar(20) CHARACTER SET utf8mb4 COLLATE ut
03-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值