Oracle数据库建表语句连续执行的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库建表语句连续执行的问题相关的知识,希望对你有一定的参考价值。
我写了一个sql文件,里面是整个库的建表语句,用oracle的dba权限用户登录.
在执行每个表的建表语句的时候都是成功的,但放到一起连续执行就提示编译错误.
语句大概是这样的,执行到第一个 "end;"后就不执行了,整个文件有许多创建触发器的,也就有许多"end;",
Java代码 CREATE TABLE tb_a (SeqNo INTEGER , CarNumber NUMERIC(10, 0) , PRIMARY KEY(SeqNo)); create SEQUENCE s_tb_a INCREMENT by 1 start with 1 NOMAXVALUE NOCYCLE NOCACHE; CREATE TRIGGER t_tb_a BEFORE INSERT ON tb_a FOR EACH ROW --WHEN (NEW.SeqNo is null) BEGIN SELECT s_tb_a.nextval INTO:NEW.SeqNo from dual; END; --这以后的就不执行了 CREATE TABLE tb_b (SeqNo INTEGER , CarNumber NUMERIC(10, 0) , PRIMARY KEY(SeqNo)); ............. .......... 请问有没有解决办法啊,还是我这样写不行啊. ..
这事什么东东?你想要序列,也不是这样的阿。
你这事执行语句阿。这样赋值,下面接受不到阿 参考技术B end;
下面一行加个 / 符号分隔应该就行了
oracle 建表语句
建表语句
一、建表语句
1简单建表语句。
下面是一个简单建表语句,可根据需要删除和修改字段。
CREATE TABLE "LEDRPT"."AUTO_CHART_ITEM" (
"ID" VARCHAR2(32) DEFAULT SYS_GUID() NOT NULL ENABLE,
"CHARTTYPE" VARCHAR2(100) NOT NULL,
"DATANAME" VARCHAR2(100) DEFAULT NULL,
"DATATYPE" VARCHAR2(100) DEFAULT NULL,
"ENABLED" NUMBER(8) DEFAULT 1,
"DELETEFLAG" NUMBER(8) DEFAULT 0,
"REMARK" VARCHAR2(255) DEFAULT NULL,
"CREATEUSERID" VARCHAR2(255) DEFAULT NULL,
"CREATEUSERNAME" VARCHAR2(255) DEFAULT NULL,
"CREATEDATE" DATE DEFAULT SYSDATE,
"MODIFYUSERID" VARCHAR2(255) DEFAULT NULL,
"MODIFYUSERNAME" VARCHAR2(255) DEFAULT NULL,
"MODIFYDATE" DATE DEFAULT NULL,
PRIMARY KEY ("ID")
)
-- 为每一个字段添加注释
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.id is '主键ID';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.charttype is '图表类型';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.dataname is '数据类型名称';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.datatype is '数据类型';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.enabled is '0-已禁用 1-已启用DIC_NAME=ENABLE_FLAG';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.deleteflag is '0--未删除 1--已删除 DIC_NAME=DELETE_FLAG';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.remark is '备注';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.createuserid is '创建人ID';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.createusername is '创建人';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.createdate is '创建时间';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.modifyuserid is '更新人ID';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.modifyusername is '更新人';
COMMENT ON COLUMN LEDRPT.AUTO_CHART_ITEM.modifydate is '更新时间';
2删除
drop table LEDRPT.AUTO_CHART_ITEM
二、建表语句解析
1 查看数据库版本
什么问题,离开版本都是扯淡,这是我当前版本数据库
SELECT * FROM "V$VERSION"
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
2 sys_guid()
sys_guid(),是Oracle 8i 后提供的函数。SYS_GUID产生并返回一个十六进制32位的全球唯一的标识符 。在大多数平台,生成的标识符由主机标符,执行函数的进程或者线程标识符,和进程或线程的一个非重复的值(字节序列)
也可以直接使用 SELECT SYS_GUID()||1 FROM dual
3 ENABLE
改关键字放在约束字段之后,代表会对之后插入的数据进行约束检查(比如判断唯一性)
其他同类关键字
- Enable 对未来的数据有约束
- Disable 对未来的数据无约束
- validate 对已有的数据有约束
- Novalidate 对已有的数据有无约束
字段可以互相搭配,有如下四种情况
(1) ENABLEVALIDATE:约束在创建时,默认就是此状态。此状态会“检查表中原有行和新插入的行”。
(2)ENABLENOVALIDATE:不能输入违反约束的新数据。但是,在创建约束时,并不检查表中原有行。
(3)DISABLEVALIDATE:检查表中原有行是否违反约束,表中可以插入违反约束的行。
(4)DISABLENOVALIDATE:约束处于禁用状态,且此状态检查表中原有数据是否违反约束.
以上四个关键字的仔细描述,可点击这个博客
■注解
DML语句
数据操纵语句
DML(Data Manipulation Language)语句:数据操纵语句。
用途:用于添加、修改、删除和查询数据库记录,并检查数据完整性
一个具有注脚的文本。1
注脚的解释 ↩︎
以上是关于Oracle数据库建表语句连续执行的问题的主要内容,如果未能解决你的问题,请参考以下文章