添加以下触发器后,我无法更新表格。以下是我到目前为止的情况:
CREATE TABLE ITEM(
item_id DECIMAL(10) NOT NULL,
description VARCHAR(30),
price DECIMAL(10),
PRIMARY KEY (item_id));
CREATE TABLE Item_price_history (
history_id DECIMAL(10) NOT NULL,
item_id DECIMAL(10) NOT NULL,
line_price DECIMAL(10,2),
new_line_price DECIMAL(10,2),
modified DATE,
PRIMARY KEY (HISTORY_ID),
FOREIGN KEY (ITEM_ID) REFERENCES item);
CREATE OR REPLACE TRIGGER Item_price_history
AFTER UPDATE OR INSERT ON ITEM
FOR EACH ROW
BEGIN
INSERT INTO item_price_history(item_id, line_price,
new_line_price,modified)
select item_id,:OLD.price,:New.price, SYSTIMESTAMP from item;
END;
现在,如果我使用以下Update命令,则会出现此错误:
UPDATE item_price_history
SET line_price = 4
WHERE ITEM_ID=ITEM.ITEM_ID and ITEM.DESCRIPTION='Spoon';
*错误报告 -
SQL错误:ORA-00904:"项目"。"描述":无效的标识符
00904. 00000 - "%s:无效标识符"
*原因:
动作:
任何帮助或建议或建议?
答案 0 :(得分:1)
请你试试这个:
UPDATE item_price_history
SET line_price = 4
WHERE item_id IN (SELECT item_id
FROM ITEM
WHERE description = 'Spoon');
答案 1 :(得分:1)
您也可以尝试下面的合并。这不会更新任何内容,因为项目表中没有Spoon描述和item_id的记录。 不确定你想要达到的目的。我看到你创造了一个触发器。仅当项目上的插入/更新不在item_price_history上时触发器才会触发。
merge INTO item_price_history tgt USING
(SELECT item_id, description FROM item
) src ON (tgt.item_id = src.item_id AND src.description = 'Spoon')
WHEN matched THEN
UPDATE SET line_price = 4;
- 更新零记录
答案 2 :(得分:0)
试试这个......
PdfReader cover = new PdfReader(coverpage);
PdfReader reader = new PdfReader(source);
PdfStamper stamper = new PdfStamper(reader, new FileStream(dest, FileMode.Create));
stamper.InsertPage(1, cover.GetPageSizeWithRotation(1));
PdfContentByte page1 = stamper.GetOverContent(1);
PdfImportedPage page = stamper.GetImportedPage(cover, 1);
page1.AddTemplate(page, 0, 0);
stamper.Close();
cover.Close();
reader.Close();