我是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。 如其他提到的那样,如果您的