你好,我想请教一下如何向Oracle数据库中插入数据后同时获取这条数据的主键

你好,我想请教一下如何向Oracle数据库中插入数据后同时获取这条数据的主键,第1张

哦,god save you, 业务生产库动错的很麻烦啊,你的库的日志模式是完整模式吗full,

以下转载:

DB2中可以使得数据回复到指定的时间点,SQL Server数据库的Recovery Model为full 或者Bulk copy的时候,是可以从日志来恢复数据库的。实际上日志中记录的一条一条的transact sql语句,恢复数据库的时候会redo这些sql语句。

前提条件:myBBS是数据库test中的一个表,

数据库test的Recovery Model为Full,Auto Close,Auto Shrink两个选项未选中。

数据库test的data files和log files均为默认的自动增长状态。

A:2004/10/13,16:00进行数据库备份,backup database test to disk='d:\db\1600bak' with init

B:2004/10/14,13:00对数据库进行了update,delete等 *** 作;

C:2004/10/15,18:00使用delete mybbs where id>300时,语句误写成delete mybbs,因而删除了表mybbs中的所有数据。

现在在C点,C点对数据库进行了误 *** 作,我们希望数据库能够恢复到C之前的状态,比如恢复到10月15日17:59分的状态。

要恢复数据库B点,使用的是A点备分的数据库1600bak;而使用的日志备分是最新的备分1820logs;因而进行如下 *** 作:

--备分日志:

BACKUP LOG test TO DISK='d:\1820logs' WITH INIT

--恢复数据库1600bak,使用WITH NORECOVERY参数:

RESTORE DATABASE test from disk='d:\db\1640bak' WITH NORECOVERY

--使用日志恢复数据库到10月15日17:59分:

RESTORE LOG test

FROM disk='d:\1820logs' WITH RECOVERY,STOPAT='10/15/2004 17:59'

上面的三条Transact SQL语句的对应过程:

1恢复数据库到A点;

2执行A-B之间的log记录,把数据库恢复到B点

这样就恢复数据库到了指定的时间点。如果恢复不成功,可能的原因是:1未使用正确的备分数据库;2数据库选项选中了Auto Shrink

本文来自CSDN博客,转载请标明出处:

1、查找表的所有索引(包括索引名,类型,构成列):select t,iindex_type from user_ind_columns t,user_indexes i where tindex_name = iindex_name and ttable_name = itable_name and ttable_name = 要查询的表2、查找表的主键(包括名称,构成列):select cu from user_cons_columns cu, user_constraints au where cuconstraint_name = auconstraint_name and auconstraint_type = 'P' and autable_name = 要查询的表3、查找表的唯一性约束(包括名称,构成列):select column_name from user_cons_columns cu, user_constraints au where cuconstraint_name = auconstraint_name and auconstraint_type = 'U' and autable_name = 要查询的表4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):select from user_constraints c where cconstraint_type = 'R' and ctable_name = 要查询的表查询外键约束的列名:select from user_cons_columns cl where clconstraint_name = 外键名称查询引用表的键的列名:select from user_cons_columns cl where clconstraint_name = 外键引用表的键名5、查询表的所有列及其属性

加个new限定就行了啊,比如:复合主键是(a,b,c), :newa 、:newb 、:newc 就是值。想得到一个表的主键,就到dba_constraints字典里去查,constraint_type='P'就是主键行,constraint_name是主键约束的名字,再到dba_cons_columns字典里,按照约束名查找column_name,如果是复合主键,就有多行,position是顺序

select column_name from dba_cons_columns where (owner,constraint_name)=(select owner,constraint_name from dba_constraints where owner='' and table_name='' and constraint_type='P')

以上就是关于你好,我想请教一下如何向Oracle数据库中插入数据后同时获取这条数据的主键全部的内容,包括:你好,我想请教一下如何向Oracle数据库中插入数据后同时获取这条数据的主键、如何在oracle中查询所有用户表的表名、主键名称、索引、外键等、oracle trigger(触发器) 获得插入的那条数据的主键字段名和值,如果是复合主键呢如何获取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9439693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存