如何在oracle数据库表的字段名定义中建立公式?

gongfriend2 2010-11-26 08:31:47
本人建立了一个表 create table gang(a varchar(100),b varchar(100));
现准备在gang表中实现,a赋给b的值.\
在SQL SERVER中是可在字段定义的公式中实现的.却不知在oracle中如何来实现此功能.
...全文
256 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyaobihai 2010-11-26
  • 打赏
  • 举报
回复
trigger
gongfriend2 2010-11-26
  • 打赏
  • 举报
回复


create or replace trigger tg_arap_item_b
after insert or update of FLBH,FB_OID on arap_item_b
for each row
declare
-- local variables here
pragma autonomous_transaction;
begin
UPDATE ARAP_ITEM_B SET DDH=FLBH+1 WHERE FB_OID=:NEW.FB_OID;
commit;
end tg_arap_item_b;
触发此触发器后却报 等待资源时检测到死锁
这该如何处理?
gongfriend2 2010-11-26
  • 打赏
  • 举报
回复
代码已经是用用友的NC了没法改了,只能在数据库这一层面上操作了.
kingkingzhu 2010-11-26
  • 打赏
  • 举报
回复
单纯的复值。。。业务层有啥意义
为啥不一次插入
心中的彩虹 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gongfriend2 的回复:]
create or replace trigger tr_gang after insert or update of FLBH,fb_oid on gang
for each row
declare
tg_flbh varchar(100);
begin
update gang set b=:new.a where a=:new.a;
end tr_gang;
可本……
[/Quote]

--你的是触发了变异表事件
--加自治事务不推荐
create or replace trigger tr_gang after insert or update of FLBH,fb_oid on gang
for each row
declare
tg_flbh varchar(100);
pragma autonomous_transaction;
begin
update gang set b=:new.a where a=:new.a;
commit;
end tr_gang;



--
create or replace trigger tr_gang after insert or update of FLBH,fb_oid on gang
for each row
begin
:new.b:=:new.a;
end tr_gang;




minitoy 2010-11-26
  • 打赏
  • 举报
回复
触发器中不能对正在修改得本表进行访问
minitoy 2010-11-26
  • 打赏
  • 举报
回复
create or replace trigger tr_gang
before insert or update of FLBH,fb_oid on gang
for each row
declare
tg_flbh varchar(100);
begin
:new.b=:new.a ;
end tr_gang;
gongfriend2 2010-11-26
  • 打赏
  • 举报
回复
create or replace trigger tr_gang after insert or update of FLBH,fb_oid on gang
for each row
declare
tg_flbh varchar(100);
begin
update gang set b=:new.a where a=:new.a;
end tr_gang;
可本人这样写却报错的,说什么
表gang发生了变化,触发器/函数不能读它
gongfriend2 2010-11-26
  • 打赏
  • 举报
回复
如何写?本人还真不知如何写呢,能写出个大概格式吗?
YY_MM_DD 2010-11-26
  • 打赏
  • 举报
回复
使用触发器可以实现。。
minitoy 2010-11-26
  • 打赏
  • 举报
回复
new前的:是需要的.
其实最好的学习资料是oracle文档,可以到oracle网站下载一份,然后集成到plsql developer上.
gongfriend2 2010-11-26
  • 打赏
  • 举报
回复
gang@hongshigroup.com
gongfriend2 2010-11-26
  • 打赏
  • 举报
回复
张工,可以了,谢你了,但我还是不知道:=是什么意思?,还有new前面一定要:号吗?
:new.ddh:=:new.flbh ;
对了,能否发个这方面帮助之类的东东给我?
谢张工了.
minitoy 2010-11-26
  • 打赏
  • 举报
回复
SQL> create table t_test_tri
2 (a number,
3 b number);

Table created

SQL>
SQL> create or replace trigger tri_t_test_tri
2 before insert or update on t_test_tri
3 for each row
4 declare
5 begin
6 :new.b:=:new.a;
7 end tri_t_test_tri;
8 /

Trigger created

SQL> insert into t_test_tri values(1,0);

1 row inserted

SQL> select * from t_test_tri;

A B
---------- ----------
1 1

SQL> update t_test_tri set a=2;

1 row updated

SQL> select * from t_test_tri;

A B
---------- ----------
2 2

SQL>
minitoy 2010-11-26
  • 打赏
  • 举报
回复
好吧,我发私信给你
gongfriend2 2010-11-26
  • 打赏
  • 举报
回复
那告诉一下你电话或手机算了,我打你,怎么样?
minitoy 2010-11-26
  • 打赏
  • 举报
回复
可以啊,可是我在单位上不了qq
gongfriend2 2010-11-26
  • 打赏
  • 举报
回复
MiNITOY,您有没有QQ号呀?能加一下你吗?我的QQ为:14588854
minitoy 2010-11-26
  • 打赏
  • 举报
回复
贴下完整的表结构看看.光看trigger有点糊涂.

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧