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 がテーブル/クエリ メタデータからデータベース制約 (null ではない) を検出していないことです。これは、TZQuery コンポーネントを使用してレコードを追加または更新する場合にのみ意味があります。card_id0またはが null のレコードを追加または更新しようとすると、例外が発生しますcard_id1。例外は、コンポーネントではなくデータベースによって生成されます。

通常、フィールド名 (またはエイリアス) の引用は、SQL クエリのフィールド名に不正な文字 (つまり、フィールド名にスペースを含む) を許可するためにのみ使用されます。フィールド名を引用すると、たとえば Firebird/Interbase などで、フィールド名を引用すると大文字と小文字が区別されますが、通常は大文字と小文字が区別されません。

于 2012-04-19T00:26:43.893 に答える