某个字段自动取得这条记录中指定的字段的值?100分

rigofree 2009-06-09 10:52:51
oracle 或mysql中 在插入一条记录的时候如何让某个字段自动取得这条记录中指定的字段的值?手动update 是不行的,数据是24小时自动采集的,
...全文
21 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovejoy_chen 2009-06-10
  • 打赏
  • 举报
回复
10楼完美正解。
仅有一点小小补充,楼主可能希望无条件让C,D覆盖A,B,所以可在触发器中去掉判断。
rigofree 2009-06-10
  • 打赏
  • 举报
回复
10楼的哥们,回答的是正解呀,详细准确。好人呀
suncrafted 2009-06-09
  • 打赏
  • 举报
回复
楼上是正解
ACMAIN_CHM 2009-06-09
  • 打赏
  • 举报
回复

触发器的语句 如下

SQL> create table t_rigofree (a int,b int, c int , d int);

Table created.

SQL>
SQL>
SQL> CREATE or REPLACE TRIGGER trg_OTSNO
2 BEFORE INSERT ON t_rigofree
3 FOR EACH ROW
4 Begin
5 IF :NEW.a IS NULL THEN
6 :NEW.a := :NEW.c;
7 END IF;
8
9 IF :NEW.b IS NULL THEN
10 :NEW.b := :NEW.d;
11 END IF;
12 End;
13 /

Trigger created.

SQL> insert into t_rigofree(a,b,c,d) values (1,2,3,4);

1 row created.

SQL> select * from t_rigofree;

A B C D
---------- ---------- ---------- ----------
1 2 3 4

SQL> insert into t_rigofree(c,d) values (33,44);

1 row created.

SQL> select * from t_rigofree;

A B C D
---------- ---------- ---------- ----------
1 2 3 4
33 44 33 44

SQL>
rigofree 2009-06-09
  • 打赏
  • 举报
回复
最后给写一下触发器的语句,
karin3 2009-06-09
  • 打赏
  • 举报
回复
触发器
rigofree 2009-06-09
  • 打赏
  • 举报
回复
有一个oracle 的数据表 有 A B C D是4个字段,但采集程序的sql语句只INSERT了C D 两个字段的数据,A B 是空,我需要采集程序插入数据时 自动把 A = C ; B =D 插入到 当前记录
hyee 2009-06-09
  • 打赏
  • 举报
回复
用default

SQL> create table t(x int default 0);

Table created

SQL> insert into t values(default);

1 row inserted

SQL> select * from t;

X
---------------------------------------
0
ACMAIN_CHM 2009-06-09
  • 打赏
  • 举报
回复

[Quote]让某个字段自动取得这条记录中指定的字段的值[/Quote]

解释一下是什么意思,建议举例说明以防止别人误解
william3033 2009-06-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vc555 的回复:]
after insert触发器。
变量:=:new.指定字段
[/Quote]
正解。
阿三 2009-06-09
  • 打赏
  • 举报
回复
用触发器
vc555 2009-06-09
  • 打赏
  • 举报
回复
after insert触发器。
变量:=:new.指定字段
rigofree 2009-06-09
  • 打赏
  • 举报
回复
只能在数据库中解决。sql不能改动
inthirties 2009-06-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 rigofree 的帖子:]
oracle 或mysql中 在插入一条记录的时候如何让某个字段自动取得这条记录中指定的字段的值?手动update 是不行的,数据是24小时自动采集的,
[/Quote]

可以通过trigger做,用plsql

或者是在你采集程序里,在insert into的时候,把A,B的值用C,D来insert
robin_ares 2009-06-09
  • 打赏
  • 举报
回复
触发器

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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