--查表数据库结构
SELECT * FROM all_tables WHERE OWNER = '****UAT' ;--查表名
SELECT * FROM user_tab_columns WHERE column_name='***_ID';--查列名
--建立主外键关系
alter table 子表
add constraint 子表名_主表名_字段名_FK
foreign key (主字段名) references 主表名
--加唯一约束
alter table 表名 modify WOH_CODE unique;
--修改数据类型
alter table 表名 modify WOH_CODE number(9) default 0 not null ;
--内联更新
UPDATE (
select t1.STOCK_ALTER_H_ID, t1.SAD_ENTITY_ID c1, t2.WORK_ORDER_H_ID c2 from 表1 t1 left join 表2 t2 on t1.SAD_ORDER_CODE = t2.WOH_CODE
)t
set c1 =c2 where 1=1;
--1.查看锁表进程SQL语句:
--被锁对象表、数据库对象表、数据session表关联来获取被锁对象对应的是那个session;
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
--2.查看锁表进程SQL语句:
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;
--3.查看导致锁表的sql语句是那一条
select l.session_id sid,
s.serial#,
l.locked_mode,
l.oracle_username,
s.user#,
l.os_user_name,
s.machine,
s.terminal,
a.sql_text,
a.action
from v$sqlarea a, v$session s, v$locked_object l
where l.session_id = s.sid
and s.prev_sql_addr = a.address
order by sid, s.serial#;
--4.杀掉锁表进程:
--通过上面的查询获取SID和serial#,替换下面的x,y,就可以解除被锁的状态
alter system kill session 'x,y';
测试未建立主外键关系1 因为未删除滚动垃圾数据
alter table PLAN_DAY_ROLL
add constraint PLAN_DAY_ROLL_ORDER_WORKSHOP_ORDER_WORKSHOP_ID_FK
foreign key (ORDER_WORKSHOP_ID) references ORDER_WORKSHOP
/
测试未建立主外键关系2 滚动与机台操作计划 因为未删除 因为 MACHINE_MASTER_PLAN 未删除