相关疑难解决方法(0)

MySQL仅在行已更改时才更新

是否有可能仅在数据被真正改变的情况下使用"更新后"触发器.我知道"新旧".但是在使用它们时我只能比较列.例如"NEW.count <> OLD.count".

但我想要的是:如果"NEW <> OLD"则运行触发器

一个例子:

create table foo (a INT, b INT);
create table bar (a INT, b INT);

INSERT INTO foo VALUES(1,1);
INSERT INTO foo VALUES(2,2);
INSERT INTO foo VALUES(3,3);

CREATE TRIGGER ins_sum
    AFTER UPDATE ON foo
    FOR EACH ROW
    INSERT INTO bar VALUES(NEW.a, NEW.b);

UPDATE foo SET b = 3 WHERE a=3;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0


select * from bar;
+------+------+
| a    | b    | …
Run Code Online (Sandbox Code Playgroud)

mysql sql database triggers

63
推荐指数
4
解决办法
17万
查看次数

SQL:仅检索其值已更改的记录

抱歉,这是一个不起眼的标题.我会随着时间进行编辑.

我有一张桌子RateTable:

| Code   |  Date     |   Rate  |

  B001     2009-01-01   1.05
  B001     2009-01-02   1.05
  B001     2009-01-03   1.05
  B001     2009-01-04   1.05
  B001     2009-01-05   1.06
  B001     2009-01-06   1.06
  B001     2009-01-07   1.06
  B001     2009-01-08   1.07
Run Code Online (Sandbox Code Playgroud)

每天都有一个条目,但费率很少变化.我是否可以编写一个只返回发生速率变化的行的SQL查询?我正在使用SQLServer

sql sql-server

6
推荐指数
2
解决办法
2万
查看次数

如何找出在Oracle中更改列的时间?

我希望能够看到更改特定列的时间。澄清一下,我不想看到更改行的时间。 我能够使用ROWDEPENDENCIES并通过时间戳触发。使用ROWDEPENDICIES,我可以看到整个行的最后修改时间,但是我特别想了解特定列的更改时间。

为了澄清,我想要下表:

id   Name       Name_modified_on    Salary   Salary_modified_on
 1   Johnson    11.03.16 10:54:27   5000     11.03.16 10:51:27  
Run Code Online (Sandbox Code Playgroud)

我怎么做?谢谢。PS:我正在运行Oracle 11g。

sql oracle timestamp

5
推荐指数
1
解决办法
1506
查看次数

标签 统计

sql ×3

database ×1

mysql ×1

oracle ×1

sql-server ×1

timestamp ×1

triggers ×1