oracle M_KH_QYFRBG表中有 gsjgh、khtybh、khmc、bgxm 四个字段,如果 gsjgh、khtybh 字段的值发生变化则将这两个的字段值合并到 bgxm 字段中,如果 khmc、khtybh 字段的值发生变化则将这两个的字段值合并到 bgxm 字段中
时间: 2024-03-26 21:39:55 浏览: 83
可以使用Oracle的触发器来实现这个功能。以下是一个示例触发器的代码:
```
CREATE OR REPLACE TRIGGER TR_M_KH_QYFRBG
AFTER UPDATE OF gsjgh, khtybh, khmc, khtybh ON M_KH_QYFRBG
FOR EACH ROW
BEGIN
IF UPDATING ('gsjgh') OR UPDATING ('khtybh') THEN
:new.bgxm := :new.gsjgh || '-' || :new.khtybh;
END IF;
IF UPDATING ('khmc') OR UPDATING ('khtybh') THEN
:new.bgxm := :new.bgxm || '-' || :new.khmc;
END IF;
END;
```
解释一下代码:这个触发器会在M_KH_QYFRBG表上进行更新操作之后执行。对于每一行数据,如果gsjgh或khtybh字段被修改了,那么就将它们的值合并到bgxm字段中,中间用"-"分隔。如果khmc或khtybh字段被修改了,那么就将它们的值合并到bgxm字段中,中间也用"-"分隔。
注意,这个触发器是基于每一行数据的更新操作来触发的,所以如果一次更新操作中有多行数据被修改,那么这个触发器会被执行多次。
相关问题
oracle M_KH_QYFRBG表中有 gsjgh、khtybh、khmc、bgxm 四个字段, 将出现变更的字段合并到 bgxm 字段,不包括 bgxm 本身
可以使用如下的 SQL 语句来实现:
```
UPDATE M_KH_QYFRBG
SET bgxm = CASE
WHEN gsjgh IS NOT NULL THEN CONCAT(bgxm, ', gsjgh')
ELSE bgxm
END,
bgxm = CASE
WHEN khtybh IS NOT NULL THEN CONCAT(bgxm, ', khtybh')
ELSE bgxm
END,
bgxm = CASE
WHEN khmc IS NOT NULL THEN CONCAT(bgxm, ', khmc')
ELSE bgxm
END
WHERE gsjgh IS NOT NULL OR khtybh IS NOT NULL OR khmc IS NOT NULL;
```
这个 SQL 语句会将 M_KH_QYFRBG 表中所有出现变更的字段合并到 bgxm 字段中,不包括 bgxm 本身。如果某个字段没有发生变更,那么不会对 bgxm 字段做任何修改。
利用sql 语句创建产品销售数据库CPXS。 2、CPXS数据库包含如下三个表: CP(产品编号,产品名称,价格,库存量)产品 XSS(客户编号,客户名称,地区,负责人,电话)销售商 CPXSB(产品编号,客户编号,销售日期,数量,销售额) 产品销售表
下面是创建CPXS数据库及三个表的SQL语句:
创建CPXS数据库:
```
CREATE DATABASE CPXS;
```
创建CP表:
```
USE CPXS;
CREATE TABLE CP(
CPBH VARCHAR(10) PRIMARY KEY,
CPMC VARCHAR(50),
JG FLOAT,
KCL INT
);
```
创建XSS表:
```
CREATE TABLE XSS(
KHBH VARCHAR(10) PRIMARY KEY,
KHMC VARCHAR(50),
DQ VARCHAR(50),
FZR VARCHAR(20),
DH VARCHAR(20)
);
```
创建CPXSB表:
```
CREATE TABLE CPXSB(
CPBH VARCHAR(10) REFERENCES CP(CPBH),
KHBH VARCHAR(10) REFERENCES XSS(KHBH),
XSRQ DATE,
SL INT,
XSJE FLOAT,
PRIMARY KEY(CPBH, KHBH, XSRQ)
);
```
说明:
- CP表包含产品的编号、名称、价格和库存量,其中产品编号是主键。
- XSS表包含客户的编号、名称、地区、负责人和电话,其中客户编号是主键。
- CPXSB表包含产品销售记录,包括销售的产品编号、客户编号、销售日期、数量和销售额,其中产品编号和客户编号都是外键,参照CP表和XSS表。CPXSB表的主键由产品编号、客户编号和销售日期三个字段组成,表示同一产品在同一客户处的不同销售记录。
阅读全文