gpt4 book ai didi

database - 仅当根据 Firebird/Interbase 中的检查约束有效时,如何才能在表之间复制记录?

转载 作者:太空狗 更新时间:2023-10-30 01:54:17 24 4
gpt4 key购买 nike

我想将一堆记录从临时表复制到目标表。问题是某些记录可能违反目标表中的检查约束,因此我想插入所有可能的内容并在其他地方为无效记录生成错误日志。

如果我执行:

INSERT INTO target_table
SELECT ... FROM temp_table

如果任何记录违反任何约束,则不会插入任何内容。我可以循环并手动插入一个一个,但我认为性能会降低。

最佳答案

您可以编写一个存储过程来复制记录并使用 WHEN ANY DO 语句捕获任何错误,例如

CREATE PROCEDURE CopyRecords( ... )
AS
BEGIN
FOR select ... FROM temp_table INTO ... DO BEGIN
INSERT INTO target_table ...
WHEN ANY DO BEGIN
INSERT INTO ErrorLog(SQL_Code, GDS_Code, ... ) VALUES(SQLCODE, GDSCODE, ...);
END
END
END

WHEN ... DO 语句记录在 InterBase 6.0 Language Reference 中(向下滚动页面,IB 6 文档下载位于底部),在“程序和触发器”一章下。

GDSCODESQLCODE上下文变量应该可以帮助您分析错误的确切原因。

关于database - 仅当根据 Firebird/Interbase 中的检查约束有效时,如何才能在表之间复制记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com