创建oracle数据表示例sql
2015-06-17 08:04
567 查看
CREATE TABLE "BRAND_RELATION"
(
"ID" NUMBER(10,0) NOT NULL ENABLE,
"CATID" NUMBER(10,0) NOT NULL ENABLE,
"BRAND_ID" NUMBER(10,0) NOT NULL ENABLE,
PRIMARY KEY ("ID")
);
CREATE SEQUENCE "BR_ID_SEQ" NOCACHE;
CREATE INDEX "BR_CATID" ON "BRAND_RELATION" ("CATID");
CREATE INDEX "BR_BRAND_ID" ON "BRAND_RELATION" ("BRAND_ID");
CREATE OR REPLACE TRIGGER "BR_ID_TRG" BEFORE INSERT ON "BRAND_RELATION" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW ENABLE
DECLARE
v_newVal NUMBER(12) := 0;
v_incval NUMBER(12) := 0;
BEGIN
IF INSERTING AND :new.id IS NULL THEN
SELECT BR_ID_SEQ.NEXTVAL INTO v_newVal FROM DUAL;
-- If this is the first time this table have been inserted into (sequence == 1)
IF v_newVal = 1 THEN
--get the max indentity value from the table
SELECT NVL(max(id),0) INTO v_newVal FROM BRAND_RELATION;
v_newVal := v_newVal + 1;
--set the sequence to that value
LOOP
EXIT WHEN v_incval>=v_newVal;
SELECT BR_ID_SEQ.nextval INTO v_incval FROM dual;
END LOOP;
END IF;
--used to emulate LAST_INSERT_ID()
--mysql_utilities.identity := v_newVal;
-- assign the value from the sequence to emulate the identity column
:new.id := v_newVal;
END IF;
END;
(
"ID" NUMBER(10,0) NOT NULL ENABLE,
"CATID" NUMBER(10,0) NOT NULL ENABLE,
"BRAND_ID" NUMBER(10,0) NOT NULL ENABLE,
PRIMARY KEY ("ID")
);
CREATE SEQUENCE "BR_ID_SEQ" NOCACHE;
CREATE INDEX "BR_CATID" ON "BRAND_RELATION" ("CATID");
CREATE INDEX "BR_BRAND_ID" ON "BRAND_RELATION" ("BRAND_ID");
CREATE OR REPLACE TRIGGER "BR_ID_TRG" BEFORE INSERT ON "BRAND_RELATION" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW ENABLE
DECLARE
v_newVal NUMBER(12) := 0;
v_incval NUMBER(12) := 0;
BEGIN
IF INSERTING AND :new.id IS NULL THEN
SELECT BR_ID_SEQ.NEXTVAL INTO v_newVal FROM DUAL;
-- If this is the first time this table have been inserted into (sequence == 1)
IF v_newVal = 1 THEN
--get the max indentity value from the table
SELECT NVL(max(id),0) INTO v_newVal FROM BRAND_RELATION;
v_newVal := v_newVal + 1;
--set the sequence to that value
LOOP
EXIT WHEN v_incval>=v_newVal;
SELECT BR_ID_SEQ.nextval INTO v_incval FROM dual;
END LOOP;
END IF;
--used to emulate LAST_INSERT_ID()
--mysql_utilities.identity := v_newVal;
-- assign the value from the sequence to emulate the identity column
:new.id := v_newVal;
END IF;
END;
相关文章推荐
- oracle创建dblink
- Oracle隔离级别
- 实战:将正式数据库上的部分数据导入历史数据库(oracle)
- oracle的some,any,all
- oracle中创建物化视图的步骤(MV)
- 建立用户,设置权限,导入oracle数据dmp
- Oracle数据库之FORALL与BULK COLLECT语句
- 脚印
- 深入详解Oracle data change notification
- 一套Oracle SQL练习题及答案
- oracle移动数据/修改数据文件路径
- oracle 启动模式
- Oracle 递归查询
- oracle学习总结
- Oracle数据库 中的基础的一些语法结构
- ORACLE 误删除视图恢复
- Oracle instr函数
- 服务器之间建立oracle之间的关联语句
- Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
- oracle max()函数和min()函数