sql - 选择引号禁用非空要求

时间:2012-04-18 20:49:04

标签: mysql sql delphi

在我的数据库中,列cardid未设置为空,即不允许为空。

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

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

这是sql的标准吗?

2 个答案:

答案 0 :(得分:0)

不要认为这与sql有任何关系,你没有得到带有结果集的约束。 我猜这是TZQuery。作为一个猜测我会说它去了并得到了表C的元数据,假设在cardid和cardid0之间的地图,然后没有“card_id1”。

颠倒select子句中字段的顺序,查看所需属性是否与之交换。

答案 1 :(得分:0)

您所看到的是,TZQuery未从表/查询元数据中检测到数据库约束(非空)。仅当您通过TZQuery组件添加或更新记录时,这才有意义。如果您尝试添加或更新card_id0card_id1的空值记录,您仍会收到异常。该异常将由数据库而不是组件生成。

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