gpt4 book ai didi

sql - 在 Firebird 中插入选择

转载 作者:行者123 更新时间:2023-12-04 14:19:04 25 4
gpt4 key购买 nike

我是 firebird 的新手,我有很多问题。我想将各种行插入从另一个表中选择的表中。

这是代码:

/*CREATE GENERATOR POS; */
SET GENERATOR POS TO 1;

SET TERM ^;

create trigger BAS_pkassign
for MATERIAL
active before insert position 66

EXECUTE BLOCK
AS

declare posid bigint;
select gen_id(POS, 1)
from RDB$DATABASE
into :posid;

BEGIN



END

SET TERM ; ^


INSERT INTO MATERIAL ( /*ID */ LOCATION, POSID, ARTID, ARTIDCONT, QUANTITY )
SELECT 1000, ':posid', 309, BAS_ART.ID, 1
FROM BAS_ART
WHERE BAS_ART.ARTCATEGORY LIKE '%MyWord%'

ID 应该从 66 开始自动递增。 posid 应该从 1 开始自动递增。

实际上它没有插入任何东西。

我正在使用 Firebird Maestro 并且刚刚打开了 SQL 脚本编辑器(它在执行脚本时不会抛出任何错误消息)。

有谁能够帮助我?

谢谢!

附加信息:

触发器应该自动增加列“ID” - 但我不知道我如何确切地改变它以便它起作用.. ':posid' 使用它抛出一个错误 :posid 但像这样没有错误(我猜它被解释为字符串)。但是我该如何正确使用它呢?

当我执行它时我没有收到错误。表结构很简单。我有2张 table :
1.
 Material (
ID (INTEGER),
Location (INTEGER),
POSID (INTEGER),
ARTID (INTEGER),
ARTIDCONT (INTEGER),
QUANTITY (INTEGER),
OTHERCOLUMN (INTEGER))

和 2. 其他表
BAS_ART (ID (INTEGER), ARTCATEGORY (VARCHAR255))

-> 我想将表 BAS_ART 中的所有条目插入到 MATERIAL 表中,这些条目在列 ARTCATEGORY 中包含“MyWord”。

最佳答案

我不明白你为什么需要触发器。

这个问题:

I want to insert all entries from the table BAS_ART which contain "MyWord" into the MATERIAL table



一个人就能解决 insert ... select陈述。
insert into material (id, location, posid, artid, quantity)
select next value for seq_mat_id, 1000, next value for seq_pos, id, 1
from bas_art
where artcategory = 'My Word';

这假设存在名为 seq_mat_id 的第二个序列(又名“生成器”)。为 material.id 列提供新 ID

关于sql - 在 Firebird 中插入选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21115720/

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