在Oracle环境下,通过存储过程实现:
判断表是否存在,如果不存在,就创建。
在新建表的同时建立对应的index。
又因为需要让主键自动增长,所以需要建立sequence和trigger。
sql脚本如下所示:
DECLARE tb_exists NUMBER ; BEGIN SELECT COUNT (*) INTO tb_exists FROM user_tables WHERE table_name = 'TB_USER' ; IF tb_exists = 0 THEN EXECUTE IMMEDIATE 'create table TB_USER( USER_ID NUMBER(30) PRIMARY KEY, USER_CODE VARCHAR2(100), USER_NAME VARCHAR2(100) )' ; EXECUTE IMMEDIATE 'create index idx_00000111111 on tb_user(user_code)'; EXECUTE IMMEDIATE 'create index idx_00000222222 on tb_user(user_name)'; EXECUTE IMMEDIATE 'CREATE SEQUENCE TB_USER_sequence INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE'; EXECUTE IMMEDIATE 'CREATE OR REPLACE TRIGGER TB_USER_trigger BEFORE INSERT ON TB_USER FOR EACH ROW WHEN (NEW.USER_ID IS NULL) BEGIN SELECT TB_USER_sequence.nextval INTO:NEW.USER_ID FROM dual ; END;'; END IF ; END ;
执行sql脚本成功。
相关推荐
- 包括但不限于: CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED 和 VIEW。 - `SELECT * FROM dba_objects;`:列出...
这些对象类型包括CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW等。 ### 四、表 - **`SELECT * FROM dba_...
在Oracle数据库管理中,SQL(Structured Query Language)是用于创建、...在实际应用中,根据业务需求可能还需要考虑其他因素,如分区、约束、存储过程、视图等。掌握这些基本操作对于理解和管理Oracle数据库至关重要。
在Oracle数据库管理中,系统表是极其重要的组成部分,它们用于存储数据库元数据,包括但不限于用户、表空间、对象等信息。对于DBA(数据库管理员)来说,熟悉并掌握这些系统表是管理和维护数据库的基础。 #### 1. ...
6. 触发器(trigger): 是在数据库表上定义的一种特殊的存储过程,它会在特定事件发生时自动执行,例如“test_tab2_trigger”。 7. 函数(function): 类似于存储过程,但返回一个值,文档中并未明确提及。 8. 包...
8. **自增序列**:Oracle不直接支持自增字段,但可以通过序列(SEQUENCE)和触发器(TRIGGER)实现类似功能。序列创建: ``` CREATE SEQUENCE seq_StudentID START WITH 1 INCREMENT BY 1; ``` 9. **索引**...
在Oracle中,一个用户是一个具有特定权限的角色,可以创建并管理数据库对象,如表、视图、索引、存储过程等。这些对象存储在特定的模式(SCHEMA)下,模式和用户通常是同名的。 删除用户下的所有对象需要遵循一定的...
grant create session, unlimited tablespace, create table, create cluster, create sequence, create procedure, create trigger, create type, create operator, create indextype to pms; 为用户赋予权限。 五...
一个模式在Oracle中相当于一个逻辑数据库,它可以包含表、视图、索引、存储过程等对象。 在Oracle HR创建脚本中,首先我们需要了解一些基本概念: 1. **用户(User)**:在Oracle中,用户是数据库的访问者,拥有...
簇是一种特殊的表组织方式,用于存储多个表中的行,以提高查询性能。拥有此权限的用户可以更改簇的结构、存储选项等。 2. **ALTER ANY INDEX**:该权限使用户能够修改任意索引(Index)的定义。索引是数据库中用于...
在Oracle数据库系统中,创建各种...通过理解和熟练使用这些Oracle对象,开发者能够构建复杂的数据库应用程序,优化查询性能,实现数据处理自动化,并确保数据一致性。Oracle学习的过程中,掌握这些概念和操作至关重要。
Oracle数据库系统包含了大量的系统表,这些表存储了关于数据库的各种元数据,如用户信息、表空间、数据库对象、表、索引、序列、视图、聚簇、快照、同义词、数据库链接以及触发器等。通过查询这些系统表,DBA...
4. **优良的存储功能**:Oracle数据库支持多种存储选项,包括分区、压缩等功能,这些高级特性有助于提高数据处理性能。 #### 二、Oracle体系结构 Oracle数据库的体系结构主要包括以下几个组成部分: 1. **数据...
这些权限涵盖了Oracle数据库中的大部分操作,通过合理分配和管理这些权限,管理员可以确保每个用户只能访问和操作他们被授权的数据和对象,从而提高系统的安全性和稳定性。同时,权限管理也是数据库审计和合规性要求...
此外,表空间被设置为`TEMP`,这可能意味着该表用于临时存储或特定的工作负载场景。 ### 创建序列 接下来,通过`CREATE SEQUENCE`语句创建了一个名为`BY1`的序列。序列在Oracle数据库中用于生成一系列连续的整数值...
- 创建权限(CREATE ANY...): 包括创建簇、索引、存储过程、序列、快照、同义词、表、触发器、视图,以及创建公共数据库链接、公共同义词、角色、回滚段、会话、表空间和用户。 - 删除权限(DROP ANY...): 包括...
这将删除用户及其所有表、索引、存储过程等。 九、回收空间 删除操作后,可能需要回收已释放的空间。`PURGE`命令可用于回收回收站中的对象,`DBA`可以使用`DBMS_RECYCLE`包进行更高级的空间管理。 十、安全考虑 ...