I'm new to Oracle. I run my scripts through SQL Developer. I try to make few connected tables and two triggers to them.
CREATE TABLE BIKE(
ID NUMBER(8) NOT NULL,
FRONT_WHEEL_ID NUMBER(8),
BACK_WHEEL_ID NUMBER(8)
);
CREATE TABLE WHEEL(
ID NUMBER(8) NOT NULL,
DIAMETER NUMBER(8,2)
);
CREATE TABLE PRODUCTS(
ID NUMBER(8) NOT NULL,
PRODUCT_NAME NVARCHAR2(64),
PRODUCT_COUNT NUMBER(8)
);
CREATE TABLE PRODUCTS_HISTORY(
ID NUMBER(8) NOT NULL,
DIAMETER NUMBER(8,2)
);
-- PK's
ALTER TABLE BIKE
ADD CONSTRAINT BIKE_PK PRIMARY KEY (ID);
ALTER TABLE WHEEL
ADD CONSTRAINT WHEEL_PK PRIMARY KEY (ID);
ALTER TABLE PRODUCTS
ADD CONSTRAINT PRODUCTS_PK PRIMARY KEY (ID);
ALTER TABLE PRODUCTS_HISTORY
ADD CONSTRAINT PRODUCTS_HISTORY_PK PRIMARY KEY (ID);
-- FK's
ALTER TABLE BIKE
ADD CONSTRAINT BIKE_FRONT_WHEEL_FK FOREIGN KEY (FRONT_WHEEL_ID)
REFERENCES WHEEL (ID);
ALTER TABLE BIKE
ADD CONSTRAINT BIKE_BACK_WHEEL_FK FOREIGN KEY (BACK_WHEEL_ID)
REFERENCES WHEEL (ID);
-- Simple data
INSERT INTO PRODUCTS (ID, PRODUCT_NAME) VALUES (1, 'Bikes');
INSERT INTO PRODUCTS (ID, PRODUCT_NAME) VALUES (2, 'Wheels');
-- Triggers
CREATE OR REPLACE TRIGGER WHEEL_after_insert
AFTER INSERT OR DELETE
ON WHEEL
DECLARE
WHEEL_COUNT NUMBER(8);
BEGIN
SELECT COUNT(*) INTO WHEEL_COUNT FROM WHEEL;
UPDATE PRODUCTS SET PRODUCT_COUNT = WHEEL_COUNT WHERE PRODUCT_NAME = 'Wheels';
END;
CREATE OR REPLACE TRIGGER BIKE_after_insert
AFTER INSERT OR DELETE
ON BIKE
DECLARE
BIKE_COUNT NUMBER(8);
BEGIN
SELECT COUNT(*) INTO BIKE_COUNT FROM BIKE;
UPDATE PRODUCTS SET PRODUCT_COUNT = BIKE_COUNT WHERE PRODUCT_NAME = 'Bikes';
END;
When I run whole as one sql script I get:
...
1 rows inserted.
TRIGGER WHEEL_AFTER_INSERT compiled
Errors: check compiler log
When I run everything except :
CREATE OR REPLACE TRIGGER BIKE_after_insert
AFTER INSERT OR DELETE
ON BIKE
DECLARE
BIKE_COUNT NUMBER(8);
BEGIN
SELECT COUNT(*) INTO BIKE_COUNT FROM BIKE;
UPDATE PRODUCTS SET PRODUCT_COUNT = BIKE_COUNT WHERE PRODUCT_NAME = 'Bikes';
END;
And then run the above in separate worksheet everything works fine.
What shall I add ? I tried adding COMMIT; and COMMIT WORK; between triggers, but it didn't do any difference.
Jah bless ya for help