我有一个触发器,可以检测字段PHONE_EXT和POST事件的变化.我想发布带有事件的Phone_ID,以便在客户端中使用此ID.这可能吗?怎么样?
CREATE TRIGGER tr2 FOR employee
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
IF (new.PHONE_EXT <> old.PHONE_EXT) THEN
POST_EVENT 'phone_ext_changed'; <-- I would like to pass a string parameter with record ID
END
Run Code Online (Sandbox Code Playgroud) 我有一个firebird数据库模式,由各种CREATE TABLE脚本设置.这些脚本已被提交到源控制系统(参见Scott Allen的站点).
现在我想创建一个新脚本,我希望我的数据库删除NOT NULL特定表中一列的约束:
ALTER TABLE myTable DROP CONSTRAINT c
Run Code Online (Sandbox Code Playgroud)
约束的名称(例如INTEG_219)可以通过查询系统表来获得:
SELECT rc.rdb$constraint_name
FROM rdb$relation_constraints rc
join rdb$check_constraints cc
on rc.rdb$constraint_name = cc.rdb$constraint_name
WHERE rc.rdb$constraint_type = 'NOT NULL'
and rc.rdb$relation_name = 'MYTABLE'
and cc.rdb$trigger_name = 'ACOLUMN'
Run Code Online (Sandbox Code Playgroud)
这些陈述可以合并为一个ALTER命令吗?
尝试使用Firebird包中的isql工具创建一个简单的数据库时,我遇到了奇怪的错误.
创建表的相同代码适用于具有其他名称的其他表.我已尝试使用和不包含字段和表名称的引号,但没有成功.
它是Firebird 2.5服务器版本.
我正在尝试执行的代码:
SET SQL DIALECT 3;
SET NAMES UTF8;
CREATE DATABASE 'localhost:C:\fuzzdb.fdb' user 'SYSDBA' password 'masterkey'
DEFAULT CHARACTER SET UTF8;
CREATE TABLE RULES (
RULE_ID INTEGER NOT NULL,
IF_FUZZY SMALLINT,
CONSTRAINT PK_RULE_ID
PRIMARY KEY (RULE_ID),
);
CREATE TABLE VARS (
VAR_ID INTEGER NOT NULL,
VRULE_ID INTEGER,
INPOUTP SMALLINT,
RANGE_STRT INTEGER,
RANGE_END INTEGER,
VAR_NAME VARCHAR(40),
FUZ_SET INTEGER,
CONSTRAINT PK_VAR_ID
PRIMARY KEY (VAR_ID)
);
CREATE TABLE FUZZSETS (
FS_ID INTEGER NOT NULL,
FS_NAME VARCHAR(40),
INPOUTP SMALLINT,
PAR1 FLOAT,
PAR2 …Run Code Online (Sandbox Code Playgroud) 我有一个没有唯一ID的表.我想创建一个存储过程,它将行的编号添加到每行作为ID,但我不知道如何获取当前行号.这是我到目前为止所做的
CREATE OR ALTER PROCEDURE INSERTID_MYTABLE
returns (
cnt integer)
as
declare variable rnaml_count integer;
begin
/* Procedure Text */
Cnt = 1;
for select count(*) from MYTABLE r into:rnaml_count do
while (cnt <= rnaml_count) do
begin
update MYTABLE set id=:cnt
where :cnt = /*how should I get the rownumber here from select??*/
Cnt = Cnt + 1;
suspend;
end
end
Run Code Online (Sandbox Code Playgroud) 我无法加载ddl,即使我有dat dll,如果我正在通过refrence添加它显示
无法添加对"Path\fbembed.dll"的引用.请确保该文件是可访问的,这是有效的程序集或COM组件.
如何从字符串中替换空的宽字符串?
例如:'H ello'转换为'Hello'
我从DB读取文本blob字段,并希望将其存储在另一个表中.当我读它时,我得到额外的空格,当我存储它时剩余的额外空间,并且在下一个查询时无法正确读取.
DXE,Firebird 2.5
更新:
我使用IBQuery - > DataSetProvider - > ClientDataSet而没有设计时创建的字段.它接缝,IBQuery以错误的格式检索数据.
当前编写代码:
blobStream := TStringStream.Create;
...
blobStream.WriteString(blobText); //blobText = 'H e l l o';
ibsql.ParamByName('ABLOBCOL').LoadFromStream(blobStream);
...
ibsql.ExecQuery;
...
Run Code Online (Sandbox Code Playgroud)
在FB数据库中存储了'H ello',但它必须是'Hello'.由于它似乎是IBQuery中的一个错误,我需要一种方法来转换该字符串.
我需要我的软件来对火鸟数据库进行热备份.使用gbak是这样做的官方方式.但是使用外部工具会迫使我解决确保工具在系统路径中的麻烦,或者我有gbak.exe的实际位置.如果可能的话我想避免这种情况.
那么,有没有做任何事情的选择
BACKUP DATABASE TO location_of_backup;
Run Code Online (Sandbox Code Playgroud)
我使用的是Delphi XE4,Firebird 2.1和DBExpress,而不是在这里安装第三方的选项.
我正在使用firebird并尝试删除列,但是以下SQL无效:
ALTER TABLE student DROP COLUMN id;
Run Code Online (Sandbox Code Playgroud) 我几周后发布了询问firebird DB以及如何监控它的信息.从那以后,我想出了一个漂亮的脚本来监控所有的页面读/写/提取/标记.我监控的其中一个列是字段MON$STAT_ID和MON$STAT_GROUP字段.这为我打印了一个很好的数字; 但是,我没有办法关联和理解究竟是什么.我认为打印出来MON$STAT_GROUP会有所帮助,但它还没有以任何方式帮助我......
我也查看了RDB$命令,但发现了非常有限的文档,看看它们是否可以帮助我监视我的数据库.
所以我决定来这里询问我是否正在监视我的数据库,以便其他人可以从页面读取/写入/提取/标记中查看数据,并对数据库是否按预期执行做出明智的决定.
其次,将RDB$命令添加到我的脚本添加任何数据的值,我将给我们的数据库伙伴?
最后,也许最重要的是,无论如何都要将MON$STAT_ID字段与数据库中的实际表关联起来,以了解何时发生的事情不应该是什么?我目前正在每分钟监视数据库,这可能是频繁的,但我得到有效的数据.现在唯一的问题是如何解释这些数据.有人可以给我一些关于他们过去使用/曾经使用过的方法的建议吗?
(注意:运行firebird 2.1)
我遇到一些常用查询的性能问题.
SELECT
v.id,
coalesce((SELECT sum(amount) FROM artjournal WHERE variant_ref=v.id AND storage_ref=1 AND atype_ref in (1,3,4)), 0) "fv",
coalesce((SELECT sum(amount) FROM artjournal WHERE variant_ref=v.id AND storage_ref=1 AND atype_ref=2), 0) "ivo",
coalesce((SELECT sum(amount) FROM artjournal WHERE variant_ref=v.id AND storage_ref=1 AND atype_ref=5), 0) "iio",
coalesce((SELECT sum(amount * mvalue) FROM artjournal WHERE variant_ref=v.id AND storage_ref=1), 0) "vw"
FROM productvariant v
Run Code Online (Sandbox Code Playgroud)
因为artjournal是一张大桌子,每天都有成千上万的新唱片,演出变得越来越糟糕.
我有所有ID字段的索引.
有没有办法重写这个语句来加快速度?或者我可以使用不同的方式从artjournal表中检索数据,如果结果为null,则返回0?
谢谢你的想法,
克里斯蒂安
firebird ×10
sql ×4
delphi ×2
.net ×1
alter-table ×1
asp.net ×1
c# ×1
coalesce ×1
delphi-xe ×1
dll ×1
events ×1
firebird2.1 ×1
firebird2.5 ×1
subquery ×1