修改表的内容-RETURNING/DEFAULT/MERGE/时间查询闪回/系统变更号查询闪回
2015-02-01 10:40
281 查看
returning子句:返回使用聚合函数计算的结果
VARIABLE average_product_price NUMBER
UPDATE products
SET price = price * 0.75
RETURNING AVG(price) INTO :average_product_price;
为列定义默认值:
CREATE TABLE order_status (
order_status_id INTEGER
CONSTRAINT default_example_pk PRIMARY KEY,
status VARCHAR2(20) DEFAULT ' Order placed' NOT NULL,
last_modified DATE DEFAULT SYSDATE);
使用MERGE合并行:
MERGE INTO products p
USING product_changes pc ON (
p.product_id = pc.product_id
)
WHEN MATCHED THEN
UPDATE
SET
p.product_type_id = pc.product_type_id,
p.name = pc.name,
p.description = pc.description,
p.price = pc.price
WHEN NOT MATCHED THEN
INSERT (p.product_id,p.product_type_id,p.name,p.description,p.price)
VALUES (pc.product_id.pc.product_type_id,pc.name,pc.description,p.price);
时间查询闪回
EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE - 10 / 1440) 查询显示十分钟之前的状态。
EXECUTE DBMS_FLASHBACK.DISABLE(); 禁用闪回操作。
系统变更号(SCN)查询闪回
VARIABLE current_scn NUMBER
EXECUTE :current_scn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); 获取当前SCN
闪回到SCN状态:
EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:current_scn);
VARIABLE average_product_price NUMBER
UPDATE products
SET price = price * 0.75
RETURNING AVG(price) INTO :average_product_price;
为列定义默认值:
CREATE TABLE order_status (
order_status_id INTEGER
CONSTRAINT default_example_pk PRIMARY KEY,
status VARCHAR2(20) DEFAULT ' Order placed' NOT NULL,
last_modified DATE DEFAULT SYSDATE);
使用MERGE合并行:
MERGE INTO products p
USING product_changes pc ON (
p.product_id = pc.product_id
)
WHEN MATCHED THEN
UPDATE
SET
p.product_type_id = pc.product_type_id,
p.name = pc.name,
p.description = pc.description,
p.price = pc.price
WHEN NOT MATCHED THEN
INSERT (p.product_id,p.product_type_id,p.name,p.description,p.price)
VALUES (pc.product_id.pc.product_type_id,pc.name,pc.description,p.price);
时间查询闪回
EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE - 10 / 1440) 查询显示十分钟之前的状态。
EXECUTE DBMS_FLASHBACK.DISABLE(); 禁用闪回操作。
系统变更号(SCN)查询闪回
VARIABLE current_scn NUMBER
EXECUTE :current_scn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); 获取当前SCN
闪回到SCN状态:
EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:current_scn);
相关文章推荐
- Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点
- 2,MySql数据库存入乱码,查询出来全改成uft-8,修改mysql配置文件my.ini内容为:default-character-set=utf8 查询下面
- 修改MOSS内容查询WebPart的默认显示方式
- 【内容查询WEB部件】修改日期长度
- Oracle与时间相关的查询 & 修改系统时间格式
- 庭审管理中动态显示今天起7日内的数据,动态查询,并根据已有数据判断新增和修改时的时间冲突问题
- Solaris下如何修改文件创建时间及查询
- 拖动N个文件,改变文件的最后修改时间,并将文件内容全部设为0
- phpcmsv9 修改弹窗内容和时间
- 查询表、存储过程、触发器的创建时间和最后修改时间(转)
- oracle误删除修改想找回原来数据(Oracle 9i闪回查询的新特性)
- 查询某存储过程最后修改时间
- oracle 查询数据库job的具体内容 执行时间 编号等
- 创建新文件、写入内容、获取上次修改时间
- 根据最后修改时间查询存储过程
- oracle 查询数据库job的具体内容 执行时间 编号等
- 修改MOSS内容查询WEBPART的默认显示方式
- 查询存储过程的最后修改时间
- C#与Oracle插入或修改或查询时间的处理
- 查询数据库修改时间