我什么时候应该在桌子上使用索引?
编辑:现在我正在使用firebird 2.5,但大多数时候我使用的是SQL Server 2005/2008.
我需要获得连续更改的所有值,并在其他"审计"表上发布修改.我是否可以完成此操作,而无需为行中的每个元素编写条件?我知道来自http://www.firebirdfaq.org/faq133/的SQL,它为您提供了验证的所有条件:
select 'if (new.' || rdb$field_name || ' is null and old.' ||
rdb$field_name || ' is not null or new.' || rdb$field_name ||
'is not null and old.' || rdb$field_name || ' is null or new.' ||
rdb$field_name || ' <> old.' || rdb$field_name || ') then'
from rdb$relation_fields
where rdb$relation_name = 'EMPLOYEE';
Run Code Online (Sandbox Code Playgroud)
但这应该写在触发器中.所以,如果我改变一个表,那么我需要修改触发器.
由于FireBird不允许动态增加varchar变量的大小,因此在将其插入文本blob之前,我考虑将所有值转换并连接到一个大的varchar变量.
如何获取特定表中的列名列表?
即.
火鸟桌:
| name | id | phone_number |
得到这样的列表:
columnList = ['name', 'id', 'phone_number']
我正在使用Firebird Embedded v2.5.如何在查询(SELECT)中使用程序?
我的程序:
SET TERM ^ ;
CREATE PROCEDURE FN_TEST( Y INTEGER )
RETURNS( X INTEGER)
AS
BEGIN
X = Y + 1;
END^
SET TERM ; ^
Run Code Online (Sandbox Code Playgroud)
我想列出一些由某些过程修改的表的字段,如下所示:
SELECT some_table_field_1,
fn_test( 4 ) AS zzz,
some_table_field_2,
fn_test( some_table_field_2 ) AS field_2_modified
FROM tb_test
Run Code Online (Sandbox Code Playgroud)
需要结果(表):
some_table_field_1 zzz some_table_field_2 field_2_modified
---------------------------------------------------------------------------
aaa 5 14 15
bbb 5 23 24
www 5 75 76
Run Code Online (Sandbox Code Playgroud)
这个东西在PostgreSQL中运行正常,但我不知道如何在Firebird中这样做.
如何将逗号分隔的字符串拆分为存储过程中的字符串并将它们插入表字段?
使用Firebird 2.5
这是一个非常直截了当的问题.Firebird有一个名为nbackup的备份工具,而您可以进行增量备份.
如果您没有按正确的顺序进行备份,该工具会抱怨(例如,您进行0级备份,然后进行2级备份).然后,我假设该工具在数据库中放置一个标志,指示上次备份的级别.
我该如何检索这些信息?
最新的Firebird 2.5.x数据库可以在Classic,SuperClassic或SuperServer模式下运行.如何检查已安装的数据库正在运行的这些模式中的哪一种?
执行此查询时,我看到奇怪的结果
update sd_invodt set line_type=iif(is_promo=1, 'campaign', 'item')
Run Code Online (Sandbox Code Playgroud)
line_type字段中的值为"item "
.有价值的空白.但是当我执行这个查询时
update sd_invodt set line_type='item'
Run Code Online (Sandbox Code Playgroud)
我没有白色空间.
现在我必须使用trim作为解决方法
update sd_invodt set line_type=trim(iif(is_promo=1, 'campaign', 'item'))
Run Code Online (Sandbox Code Playgroud)
我使用最新的firebird 2.5.Line_type是varchar(15).
这是Firebird中的错误吗?
编辑
我已经使用新数据库进行了测试,问题仍然存在.
我正在尝试设置一个本地firebird实例进行测试,但即使是ISQL也无法连接到它.我试图通过遵循快速入门指南以下位置:
CONNECT ..\examples\empbuild\employee.fdb user SYSDBA password masterkey;
Run Code Online (Sandbox Code Playgroud)
结果导致:
Statement failed, SQLSTATE = 08001
unavailable database
Run Code Online (Sandbox Code Playgroud)
经过一番搜索,我尝试将其修改为:
CONNECT "localhost:C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\employee.fdb" user SYSDBA password masterkey;
Run Code Online (Sandbox Code Playgroud)
结果导致:
Statement failed, SQLSTATE = 28000
cannot attach to password database
Run Code Online (Sandbox Code Playgroud)
在确认我有正确的目录路径后,我决定立即联系并尝试创建一个新的DB:
SQL>CREATE DATABASE 'C:\data\test.fdb' page_size 8192
CON>user 'SYSDBA' password 'masterkey';
Run Code Online (Sandbox Code Playgroud)
这也给了我错误:
Statement failed, SQLSTATE = 08001
unavailable database
Run Code Online (Sandbox Code Playgroud)
我可能会遇到任何常见的陷阱吗?我也尝试过上面的命令,无论是否运行firebird服务.还有关于SQLSTATE代码的详细参考吗?
我有一张大约246k记录的表格.它有大约25列,除了一个小blob外都是整数.
如果我在所有字段上查询表
select a.recordid, a.editcount, ect.. from ARTrans a
Run Code Online (Sandbox Code Playgroud)
它在一秒钟内执行.但是,如果我只包括记录ID
select a.recordID from ARTrans a
Run Code Online (Sandbox Code Playgroud)
执行需要20多秒.大部分时间花在计划(自然)上似乎很奇怪,因为在大多数情况下,我有一个关于recordid的索引.
我收集了垃圾,重新创建了索引,删除了索引,在RecordID上只添加了一个索引,但它仍然超级慢.
任何帮助将不胜感激.
编辑提供更多信息:
Firebird:2.5.3.26778
fbclient.dll:2.5.1.26351
数据库中没有其他人,我已将其移至本地.
这是表def
CREATE TABLE ARTRANS
(
RECORDID Integer NOT NULL,
EDITCOUNT Smallint,
CLASSIFICATION Smallint,
TRANSID Integer,
DATEENTERED Integer,
CLIENTID Integer,
TRANSTYPE Smallint,
BILLED Smallint,
FINALIZEID Smallint,
INVOICEID Integer,
INVOICENUM Integer,
INVOICEDATE Integer,
GROUPID Smallint,
EXPORTED Char(1),
TRANSVALUE Decimal(18,4),
DESCRIPTION Blob sub_type 0,
POSTPERIOD Smallint,
LINKEDTRANSID Integer,
LINKEDINVID Integer,
LINKEDFUNDSID Integer,
INFOONLY Smallint,
NEEDTRANSFER Char(1),
DESTTRANSID Integer,
LSTTKREDIT Integer,
SPELLNGRAMMARCHECKSTATUS …
Run Code Online (Sandbox Code Playgroud) firebird2.5 ×10
firebird ×9
sql ×6
audit-trail ×1
database ×1
fdb ×1
indexing ×1
isql ×1
performance ×1
python ×1
select ×1
string ×1
triggers ×1