当前位置: 首页 > 面试题库 >

在Firebird中插入选择

贾俊喆
2023-03-14
问题内容

我是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张桌子: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中所有在ARTCATEGORY列中包含“ MyWord”的条目插入到MATERIAL表中。


问题答案:

我不明白为什么您根本需要扳机。

这个问题:

我想将表BAS_ART中包含“ MyWord”的所有条目插入到MATERIAL表中

可以用一个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为列提供了新的ID。material.id



 类似资料:
  • 问题内容: 我昨天提出的问题已简化,但我意识到我必须报告整个故事。我必须将4个不同表中的4个数据提取到Firebird 2.5数据库中,并且以下查询有效: 但是,由于REVISIONE列,查询返回的值是我的两倍(或更多)。如何仅选择具有最大REVISIONE值的单个NUMEROCOMMESSA的行? 问题答案: 在这里-http: //sqlfiddle.com/#!6/ce7cf/4 样本数据(

  • 问题内容: 我正在研究SQL Server存储过程。我有一个表“ User”,其中包含字段(ID,名称,电子邮件,地址)。 我有以下查询返回所有用户 它返回所有用户,但是我只想在返回之前将以下虚拟用户插入到结果记录中。 用户=> ID = 0,名称=“全部” 该记录不会出现在数据库中,但是在返回结果时,我想将此记录作为第一个记录插入,然后插入其余用户。我试图找到这样的东西,但徒劳无功。 问题答案:

  • Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。 Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品,用C和C++开发。由于与interbase的血缘关系,大部分interbas

  • 就像有人说的第二种方式更慢,但我不确定,那么哪种方式更好呢?不能使数据库崩溃。

  • 问题内容: 我有这样构建的mysql表: 当我做: 我得到: 为每个唯一用户生成一个唯一的post_id。 我需要gen_id列为1 2 3 4 5 6等。执行插入操作时如何增加此列。我尝试了以下方法,但无法正常工作。什么是正确的方法? 问题答案: 试试这个:

  • 问题内容: 昨天我问了这个问题:如果在mysql中插入语句并且答案很好用。问题是,如果值不存在,我需要在表中插入一行。FE 我能怎么做?在互联网上我找不到答案:( 问题答案: 我假设您的表名为tbl。 纯粹是为了方便那些要求所有SELECT语句都应该包含FROM以及可能包含其他子句的人们。MySQL可能会忽略这些子句。如果没有引用表,MySQL不需要FROM DUAL。 如其他提到的那样,如果您的