有一个oracle 数据表结构 create table T_GIRL ( id char(4) not null, -- 编号 name varchar2(30) not null, -- 姓名 describe varchar2(500) not null, -- 描述 primary key(id) -- 指定id为表的主键 ); 帮我创建一个可以监控字段name 变化的触发器, 触发器逻辑 如果name值要更新为 '张三' 则 字段describe 同时更新为 '11111' 如果name值要更新为 '李四' 则 字段describe 同时更新为 '22222'
时间: 2024-02-14 14:06:10 浏览: 29
好的,以下是创建该触发器的SQL语句:
```
CREATE OR REPLACE TRIGGER TR_NAME_UPDATE
BEFORE UPDATE OF name ON T_GIRL
FOR EACH ROW
BEGIN
IF UPDATING AND :NEW.name = '张三' THEN
:NEW.describe := '11111';
ELSIF UPDATING AND :NEW.name = '李四' THEN
:NEW.describe := '22222';
END IF;
END;
```
当T_GIRL表中的name字段更新时,该触发器会被触发。如果更新后的name字段是'张三',则describe字段会被更新为'11111';如果更新后的name字段是'李四',则describe字段会被更新为'22222'。
相关问题
CREATE TABLE UserState( ------用户状态表(在线情况) US_ID int NOT NULL PRIMARY KEY, ------用户状态ID US_Name varchar(10) NOT NULL ------状态名字 ) 插入这个表的数据
以下是创建和插入数据到UserState表的示例代码:
```sql
-- 创建UserState表
CREATE TABLE UserState(
US_ID int NOT NULL PRIMARY KEY,
US_Name varchar(10) NOT NULL
);
-- 插入数据到UserState表
INSERT INTO UserState (US_ID, US_Name)
VALUES (1, '在线'),
(2, '离线'),
(3, '忙碌');
```
上述代码首先创建了一个名为UserState的表,该表包含两个列:US_ID和US_Name。US_ID是主键,不允许为空,US_Name是状态名字,也不允许为空。
然后,使用INSERT INTO语句将数据插入到UserState表中。每个INSERT INTO语句插入一行数据,指定US_ID和US_Name的值。在上述示例中,插入了三行数据,分别表示在线、离线和忙碌状态。
基于Product表和ShopProduct表查询在所有商店都无库存的商品信息,查询结果包括商品名称、商品库存。 表结构: Product表 CREATE TABLE Product (product_id CHAR(4) NOT NULL, --商品编号 product_name VARCHAR(100) NOT NULL, --商品名称 product_type VARCHAR(32) NOT NULL, --商品种类 sale_price INTEGER , --销售价格 purchase_price INTEGER , --进货价格 regist_date DATE , --登记日期 PRIMARY KEY (product_id)); ShopProduct表 CREATE TABLE ShopProduct (shop_id CHAR(4) NOT NULL, -- 商店编号 shop_name VARCHAR(200) NOT NULL, -- 商店名称 product_id CHAR(4) NOT NULL, -- 商品编号 quantity INTEGER NOT NULL, -- 商品库存 PRIMARY KEY (shop_id, product_id));
以下是基于Product表和ShopProduct表查询在所有商店都无库存的商品信息的SQL语句:
```
SELECT Product.product_name, ShopProduct.quantity
FROM Product
LEFT JOIN ShopProduct ON Product.product_id = ShopProduct.product_id
GROUP BY Product.product_id
HAVING SUM(ShopProduct.quantity) = 0;
```
该SQL语句使用了LEFT JOIN将Product表和ShopProduct表连接起来,然后根据商品编号进行分组,并使用HAVING子句来过滤出所有商店库存均为0的商品。查询结果包括商品名称和商品库存,通过Product.product_name和ShopProduct.quantity进行查询。
请注意,在执行该操作前,请务必确保Product表和ShopProduct表已经正确创建,并且商品编号不重复。