0

在我的数据库中,该列cardid未将 null 设置为 true,即不允许 null。

当我在 delphi cum zeos TZQuery 中运行以下查询时,结果字段card_id0具有所需的属性为 true,这是正确的,但结果字段card_id1不是,即周围的引号card_id1似乎意味着给我数据但没有约束。

select c.id, c.cardid as card_id0, c.cardid as "card_id1" 
  from mydata c

这是sql中的标准吗?

4

2 回答 2

0

不要认为这与sql有任何关系,您不会通过resulset获得约束。我猜这是 TZQuery。作为一种猜测,我会说它获取了表 C 的元数据,假设 cardid 和 cardid0 之间的映射,然后没有任何“card_id1”。

反转 select 子句中字段的顺序,看看是否需要的属性与之交换。

于 2012-04-18T21:06:24.377 回答
0

您所看到的是 TZQuery 没有从表/查询元数据中检测到数据库约束(非空)。这仅在您通过 TZQuery 组件添加或更新记录时才有意义。如果您尝试添加或更新带有 null for card_id0or的记录,您仍然会遇到异常card_id1。异常将由数据库而不是组件生成。

通常,引用字段名称(或别名)仅用于在 SQL 查询中允许字段名称中出现非法字符,即字段名称中有空格。引用字段名称可能会产生副作用,例如在 Firebird/Interbase 中,引用字段名称会使其区分大小写,而它们通常不区分大小写。

于 2012-04-19T00:26:43.893 回答