Мне нужна помощь при создании представления, а затем триггеры для следующего: обновить комиссию продавца (10% от продажи), количество инвентаря и баланс клиента, когда введена каждая позиция счета.SQL Trigger for View
Это то, что я прямо сейчас для просмотра: я получил это работает, но это показывает мне, что у меня есть ошибка в строке 8:
CREATE TABLE CUSTOMER
(CUSTOMER_ID DECIMAL(2,0) PRIMARY KEY,
CUSTOMER_NAME CHAR(25),
CUSTOMER_ADDRESS CHAR(15),
CUSTOMER_ZIPCODE DECIMAL(5,0),
CUSTOMER_CITY CHAR(15),
CUSTOMER_STATE CHAR(2),
CUSTOMER_BALANCE DECIMAL(4,2)
);
CREATE TABLE SALESPERSON
(SALESPERSON_ID DECIMAL(3,0) PRIMARY KEY,
SALESPERSON_NAME CHAR(25),
COMMISSION DECIMAL(5,2)
);
CREATE TABLE INVOICE
(INVOICE_ID DECIMAL(3,0),
CUSTOMER_ID DECIMAL(2,0),
SALESPERSON_ID DECIMAL(3,0),
ITEM_NUM DECIMAL(4,0),
INVOICE_DATE DATE,
PRIMARY KEY (CUSTOMER_ID, SALESPERSON_ID),
FOREIGN KEY (CUSTOMER_ID) REFERENCES CUSTOMER,
FOREIGN KEY (SALESPERSON_ID) REFERENCES SALESPERSON
);
CREATE TABLE INVENTORY
(INV_NUM DECIMAL(4,0) PRIMARY KEY,
DESCRIPTION CHAR(10),
INV_QUANTITY DECIMAL(4,0),
INV_PRICE DECIMAL(7,2),
INV_COST DECIMAL(7,2),
INVOICE_ID DECIMAL(3,0),
ITEM_NUM DECIMAL(4,0),
FOREIGN KEY (INVOICE_ID, ITEM_NUM) REFERENCES INVOICE
);
CREATE TABLE INVOICE_LINE_ITEM
(QUANTITY_SOLD DECIMAL(4,0),
SALE_PRICE DECIMAL(7,2),
INVOICE_ID DECIMAL(3,0),
INV_NUM DECIMAL(4,0),
ITEM_NUM DECIMAL(4,0),
PRIMARY KEY (INVOICE_ID, INV_NUM, ITEM_NUM),
FOREIGN KEY (INVOICE_ID, ITEM_NUM) REFERENCES INVOICE,
FOREIGN KEY (INV_NUM) REFERENCES INVENTORY
);
CREATE TABLE VENDOR
(VENDOR_ID DECIMAL(2,0) PRIMARY KEY,
VENDOR_NAME CHAR(25),
CITY CHAR(15),
STATE CHAR(2),
VENDOR_BALANCE DECIMAL(4,2)
);
CREATE TABLE PURCHASE_ORDER
(PURCHASE_ORDER_ID DECIMAL(2,0) PRIMARY KEY,
BALANCE DECIMAL(4,2),
SHIPMENT CHAR(10),
PURCHASE_ORDER_DATE DATE,
VENDER_ID DECIMAL (2,0),
FOREIGN KEY (VENDER_ID) REFERENCES VENDOR
);
CREATE TABLE PO_LINE_ITEM
(PO_DATE DATE,
PO_BALANCE DECIMAL(4,0),
ITEM_NUM DECIMAL(4,0),
INV_QUANTITY DECIMAL(4,0),
INV_NUM DECIMAL(4,0),
PURCHASE_ORDER_ID DECIMAL(2,0),
PRIMARY KEY (INV_NUM, PURCHASE_ORDER_ID),
FOREIGN KEY (INV_NUM) REFERENCES INVENTORY,
FOREIGN KEY (PURCHASE_ORDER_ID) REFERENCES PURCHASE_ORDER);
SQL> CREATE OR REPLACE VIEW VW_INVOICES
2 AS
3 SELECT INVOICE_LINE_ITEM.INVOICE_ID, INVOICE.SALESPERSON_ID,
4 SALESPERSON.SALESPERSON_NAME, SALESPERSON.COMMISSION,
5 INVENTORY.ITEM_NUM, INVENTORY.INV_QUANTITY,
6 INVOICE.CUSTOMER_ID, CUSTOMER.CUSTOMER_BALANCE
7 FROM INVOICE_LINE_ITEM, INVOICE, SALESPERSON, INVENTORY, CUSTOMER
8 JOIN INVOICE ON INVOICE.INVOICE_ID = INVOICE_LINE_ITEM.INVOICE_ID
9 JOIN SALESPERSON ON SALESPERSON.SALESPERSON_ID = INVOICE.SALESPERSON_ID
10 JOIN INVOICE ON INVOICE.ITEM_NUM = INVENTORY.ITEM_NUM
11 JOIN CUSTOMER ON CUSTOMER.CUSTOMER_ID = INVOICE.CUSTOMER_ID;
JOIN INVOICE ON INVOICE.INVOICE_ID = INVOICE_LINE_ITEM.INVOICE_ID
*
ERROR at line 8:
ORA-00904: "INVOICE_LINE_ITEM"."INVOICE_ID": invalid identifier
Вы не имеют таблицы 'INVOICE_ID'. – Blank
Какая база данных вы используете, Oracle или MySQL? –
теперь видят ошибки в строке 8 –