【发布时间】:2018-01-24 22:52:54
【问题描述】:
在 PostgreSQL 中创建以下函数时,我得到
错误:与 OID 80424 的关系不存在 CONTEXT:SQL 函数 “test_update_icd_code”语句7 SQL状态:42P01
那么如何在函数中创建表呢?
(注意:该表将在函数完成时被删除。)
TIA
CREATE OR REPLACE FUNCTION test_update_icd_code()
RETURNS void
AS $$
-- Create a test table that references dx_log.
DROP TABLE IF EXISTS test;
CREATE TABLE test
(
recid serial PRIMARY KEY,
dx_log_recid integer NOT NULL,
CONSTRAINT test_dx_log_fk FOREIGN KEY (dx_log_recid)
REFERENCES dx_log (recid) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE RESTRICT
)
WITH (
OIDS = FALSE
);
-----------
$$ LANGUAGE 'sql' VOLATILE;
【问题讨论】:
-
我能够按原样创建函数(复制/粘贴)。当我运行它时,我得到了“表不存在”的错误。我将
nova.test更改为test,现在它可以正常工作了。您是否尝试过删除nova限定符? -
@ravioli 是的...代码在函数之外运行良好。当它从函数内部运行时,就会发生错误。如何在函数内修复它? ('Nova' 仅在我收到错误后添加)
-
@ravioli 研究了提供的参考资料。我正在使用语言 SQL;我不明白为什么我需要格式;我正在创建的表是在同一个函数中创建和销毁的???
-
请在回答部分查看我的 cmets。
标签: postgresql