Oracle表创建与修改详解:实例与触发器

需积分: 50 9 下载量 48 浏览量 更新于2024-09-08 收藏 4KB TXT 举报
Oracle是一种广泛使用的数据库管理系统,本文将详细介绍如何在Oracle环境中创建、修改表以及执行相关操作。首先,我们将学习如何使用SQL语句创建一个名为TS_OPERATE_LOG的表,该表用于记录操作日志,包括主键ID(L_PK_ID_N)、外键信息(L_FK_INFO_ID)、信息类型(L_INFO_TYPE)等字段。创建表的语法如下: ```sql CREATE TABLE TS_OPERATE_LOG ( L_PK_ID_N INT NOT NULL PRIMARY KEY, L_FK_INFO_ID VARCHAR2(50), L_INFO_TYPE VARCHAR2(50), L_OPERATE VARCHAR2(500), L_MODULE VARCHAR2(50), L_MODULE_KEY VARCHAR2(50), L_MARK VARCHAR2(500), L_FK_USER_ID VARCHAR2(50), L_FK_USER_NAME VARCHAR2(50), L_STATUS INT, L_TIMEDATE DATE ); ``` 接着,为了自动为表中的L_PK_ID_N字段生成唯一递增的值,我们创建了一个序列TS_OPERATE_LOG_autoinc,设置其范围从1到9999999999999999999999999999,并使用before insert触发器确保每次插入新行时自动更新这个字段: ```sql CREATE SEQUENCE TS_OPERATE_LOG_autoinc MINVALUE 1 MAXVALUE 9999999999999999999999999999 START WITH 1 INCREMENT BY 1 CACHE; CREATE OR REPLACE TRIGGER insert_TS_OPERATE_LOG BEFORE INSERT ON TS_OPERATE_LOG FOR EACH ROW BEGIN SELECT TS_OPERATE_LOG_autoinc.NEXTVAL INTO :new.L_PK_ID_N FROM DUAL; END; / ``` 在实际业务场景中,比如处理用户上传文件的操作,代码可能涉及到从请求中获取用户公司ID(P_FK_COMPANY_ID),并在保存文件时关联到用户信息。这里使用了一个示例,当请求中文件数量大于0时,会创建一个目录来存储文件,并为每个上传的文件生成一个唯一的文件名: ```csharp info.P_FK_COMPANY_ID = this.CurrentUserInfo.CompanyId; if (Request.Files.Count > 0) { string dir = PathConfigConst.WebSiteLocalDir + _PLANFILEDIR; if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); foreach (HttpPostedFileBase file in Request.Files) { string fileName = DateTime.Now.ToString("yyyyMMddHHmmssyyyy") + Path.GetExtension(file.FileName); string path = dir + fileName; file.SaveAs(path); var fileInfo = new TS_FILE { F_FK_USER_ID = ... }; // 这里可以继续处理文件信息并将其关联到TS_FILE对象 } } ``` 本文介绍了在Oracle中创建和管理表的关键步骤,包括创建表结构、定义序列与触发器以及处理用户数据操作,这些都是数据库开发人员必备的基础技能。通过这些操作,可以有效地组织和存储数据,确保系统的高效运行。