我想让我的C#程序知道是否为特定的Firebird数据库列设置了NOTNULL约束。可以通过查询元数据来动态检查吗?我发现Firebird文档非常稀少。Firebird SQL:检查是否为特定列设置了NOT NULL约束?
另外,Firebird如何提供信息在特定表中存在哪些列?
我想让我的C#程序知道是否为特定的Firebird数据库列设置了NOTNULL约束。可以通过查询元数据来动态检查吗?我发现Firebird文档非常稀少。Firebird SQL:检查是否为特定列设置了NOT NULL约束?
另外,Firebird如何提供信息在特定表中存在哪些列?
做手工,使用下面的语句:
select rdb$null_flag
from rdb$relation_fields
where rdb$relation_name = 'MyTable' and rdb$field_name = 'MyField'
或者,你可以尝试探索FbDataReader.GetSchemaTable()
。
您需要请求有关约束的Firebird元数据 - 有关它的所有信息都存储在系统表中。例如,如何做到这一点看看这个页面:http://www.alberton.info/firebird_sql_meta_info.html(见“列表CONSTRAINTs”部分)。
链接中的信息很好,但是如果您复制了有关'NULL'约束的零件并将表列放入其中,则您的答案会更好。这将符合SO的精神,其目的不仅仅是收集(可能过时)的链接。 – mghie 2010-02-09 05:09:45