【发布时间】:2014-06-21 15:42:35
【问题描述】:
我是数据库的新手,并尝试创建一个触发器,如果另一个表的元组设置为 0,它将将字符从“Y”更改为“N”。我让它工作了一些,但它正在更改所有元组我想要的一个。这是触发器和代码。任何建议都非常感谢。
create or replace TRIGGER CHANGE_STOCK_FLAG
AFTER UPDATE OF AMOUNT_REMAINING ON PRODUCT
FOR EACH ROW
BEGIN
UPDATE BOOK
SET IN_STOCK = 'N';
END;
更新声明:
UPDATE PRODUCT
SET AMOUNT_REMAINING = 0
WHERE PROD_ID = 5001;
触发器编译成功并且在上述更新时将 Book TABLE 中所有元组的 IN_STOCK 重置为“N”。 有 where 子句或我可以使用的东西吗?
【问题讨论】:
-
您能否将 DDL 共享到您的
book和product表中? -
感谢整理 吃个桃子。发的时候就乱了有什么建议吗?
-
您的 PRODUCT 和 BOOK 表是如何连接的?如何定义为哪本书更改 IN_STOCK 列的值?
-
嗨 Mureinik,这是表 CREATE TABLE 产品(PROD_ID NUMBER(, 0) NOT NULL,AMOUNT_REMAINING NUMBER(, 0) NOT NULL,PRICE NUMBER(9, 2) NOT NULL , IN_STOCK CHAR(1 BYTE) NOT NULL , CONSTRAINT PRODUCT_PK PRIMARY KEY
-
对不起 Mureinik,这是另一本 CREATE TABLE BOOK ( BOOK_ID NUMBER(, 0) NOT NULL , ISBN_ID VARCHAR2(100 BYTE) , TITLE VARCHAR2(100 BYTE) NOT NULL , PROD_ID NUMBER( , 0) NOT NULL , IN_STOCK CHAR(1 BYTE) , CONSTRAINT BOOK_PK PRIMARY KEY (BOOK_ID)
标签: sql oracle triggers oracle11g