我已經看遍了所有的網絡和stackoverflow,儘管試圖做我看到的一切,我無法得到它的工作。代碼:PostgreSQL觸發器創建問題
CREATE TABLE "ExpressionHistory" (
ExpressionHistoryId SERIAL PRIMARY KEY,
ExpressionId INT NOT NULL,
UserId INT NOT NULL,
AccessDate TIMESTAMP NOT NULL,
CreatedBy VARCHAR(12) NOT NULL,
CreatedDate TIMESTAMP NOT NULL,
ModifiedBy VARCHAR(12) NOT NULL,
ModifiedDate TIMESTAMP NOT NULL);
ALTER TABLE "ExpressionHistory"
ADD CONSTRAINT FK_EXPRESSIONHISTORY_EXPRESSION
FOREIGN KEY ("expressionid")
REFERENCES "Expression";
CREATE OR REPLACE FUNCTION prune_expression_history() RETURNS TRIGGER AS $pruned_expression_history$
BEGIN
DELETE FROM ExpressionHistory WHERE ExpressionHistoryId =
(SELECT ExpressionHistoryId FROM ExpressionHistory WHERE
UserId = NEW.UserId AND
(SELECT COUNT(1) FROM ExpressionHistory WHERE UserId = NEW.UserId) > 10
ORDER BY AccessDate DESC
LIMIT 1 OFFSET 10);
RETURN NULL;
END;
$pruned_expression_history$ LANGUAGE plpgsql;
CREATE TRIGGER PruneExpressionHistoryTable
AFTER INSERT ON ExpressionHistory
FOR EACH ROW
EXECUTE PROCEDURE prune_expression_history();
錯誤:
ERROR: relation "expressionhistory" does not exist
********** Error **********
ERROR: relation "expressionhistory" does not exist
SQL state: 42P01
所以,我們的目標是,在插入這個表,我刪除的10最早的記錄爲用戶在表上的插入發生。我無法觸發實例化,這顯然是一個問題。我懷疑這個問題是微妙的,但我無法孤立它。這發生在CREATE TRIGGER執行中。提前致謝。
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS –