問題タブ [check-constraints]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - SQLServer-値が別のテーブルからのものである列のCHECK制約
許容値の範囲がハードコーディングせずに別のテーブルから取得されるように、列にCHECK制約を設定するにはどうすればよいですか?
簡単な例を次に示します。
OneManyTable.TaskID列にCHECK制約を設定して、受け入れ可能な値が別のテーブルの列、つまりMetadataTable.Value(MetadataTable.class ='A')から取得されるようにします。
私はすでにフォーマットのチェック制約を作成しようとしました
しかし、これはサポートされていません。
一方、('Val1'、'Val2')のTaskIDは、SQL2k8(SQL2000ではありません!)ではチェック制約として機能しますが、ハードコーディングのために受け入れられません。
CHECK制約または私が気付いていない他のいくつかの派手なメカニズムを介して、私が望むものを達成する方法は?
PS。データベース側である必要があります。誰かが私に提案したようなクライアント側のチェックはありません。
sql - SQL でテーブルに「条件付き一意」制約を設定できますか?
私はこれまでのキャリアの中で何度かこの問題に直面してきましたが、地元の同業者の誰もそれに答えられないようです。ユーザーがプロセスの途中で停止する場合があることを除いて、候補キーである「説明」フィールドを持つテーブルがあるとします。したがって、おそらく 25% のレコードでこの値は null ですが、NULL 以外のすべてのレコードでは一意である必要があります。
もう 1 つの例は、レコードの複数の「バージョン」を維持する必要があるテーブルであり、ビット値はどれが「アクティブな」バージョンであるかを示します。そのため、「候補キー」は常に読み込まれますが、同一のバージョン (アクティブ ビットが 0) が 3 つ存在し、アクティブなバージョン (アクティブ ビットが 1) が 1 つだけ存在する場合があります。
これらの問題を解決する別の方法があります (最初のケースでは、ストアド プロシージャまたはビジネス レイヤーのいずれかでルール コードを適用し、2 番目のケースでは、アーカイブ テーブルにトリガーを入力し、履歴が必要なときにテーブルを UNION します)。 . 代替手段は必要ありません (明らかにより良い解決策がない限り)。SQL のいずれかのフレーバーがこの方法で「条件付きの一意性」を表現できるかどうか疑問に思っています。私はMS SQLを使用しているので、その中でそれを行う方法があれば、素晴らしい. 私は主に問題に学術的に興味があります。
sql-server-2008 - 制約をチェックしてIPアドレスフィールドを検証します
私はC#とSQLServer2008データベースを含むプロジェクトに取り組んでいます。nvarchar(15)
テーブルの1つに、IPアドレスを含むフィールド( )があります。
入力値が実際にIPアドレスであることを検証するチェック制約を追加したいと思います。
これを行うために正規表現を使用したかったのですが、この機能はデフォルトではサポートされていないようです。UDFを内部に使用してcustommdllを作成する方法(MSDNチュートリアル)を見ましたが、それがどのように機能するか(つまり、dllをどこに配置すればよいですか?)
そのような制約を追加する「簡単な」方法はありますか?どんな解決策も歓迎します。
前もって感謝します !
mysql - MySQL はチェック制約をサポートしていますか?
MySQL はチェック制約をサポートしていますか?
エラーなしで MySQL で次のスクリプトを実行できます。
しかし、クエリを実行しても反映されません:
sql - 別のテーブルを参照するチェック制約を設定するにはどうすればよいですか?
SQL Server 2008 データベースに次のテーブルがあります。
ItemIDフィールドを持つtblItem 。
tblGoodItemにも ItemID フィールドがあり、tblItem を指す外部キーがあります。
tblBadItemにも ItemID フィールドがあり、tblItem を指す外部キーもあります。
アイテムは、良いアイテムと悪いアイテムの両方になることはできません。どちらか一方でなければなりません。しかし、その商品が良くも悪くも、それは商品でなければなりません。
私の質問はこれです: ItemID 値が両方のテーブルに存在できないように、tblGoodItem と tblBadItem の両方の ItemID フィールドに制約を追加するにはどうすればよいですか?
同様の質問に対するスタック オーバーフローの回答をいくつか読みましたが、この解決策を考えています。
ItemID で tblBadItem の tblGoodItem を結合するビューvwItemを作成します。
ビューにいくつのレコードが存在するかを確認するために、vwItem に対してクエリを実行する UDF fnItemを記述します。
fnItem を呼び出して、返される値が 0 であることを確認する制約があります。
これは最高のアイデアですか?誰かがより良いアイデアを持っていますか?
sql - Constraints in SQL Database
I need to have a table in T-SQL which will have the following structure
Either no rows, or at most one row can have the Flag column with the value T. My developer claims that this can be achieved with a check constraint placed on the table.
Questions:
- Can such a constraint be placed on the database itself (ie an inter-row constraint) at the database level, rather than in business rules for updating or inserting rows
- Is such a table in normal form?
- Or would normal form require removing the Flag column, and instead (say) had another simple table or variable containing the value of row which had Flag=T, ie in the above case row=3.
sql - 削除前に SQL の整合性制約違反を確認する
私の質問はこれに似ています
制約違反のために DELETE クエリが失敗するかどうかを確認したい。失敗させてエラーをキャッチするのは見苦しいと思うので、データベースレベルでこれを行いたいと思います。
別のオプションは、SELECTクエリを使用して「手動で」チェックして、制約があるかどうかを確認することですが、これはかなり面倒です。
これを行う「ネイティブ」な方法はありますか?
sql - チェック制約を作成するために SQLServer が使用する構文を説明してください
デフォルトの制約を右クリックして、SQL Server に CREATE スクリプトを作成するように依頼すると、次のコードが生成されます。
記録のために、私は最初の ALTER ステートメントを理解していますが、2 番目の alter ステートメントが何をするのか理解していません。「CHECK CONSTRAINT」フレーズをグーグルで検索しようとしましたが、追加制約構文でしかヒットしませんでした。
ありがとう。
セス
update
Joe さん、ご回答ありがとうございます。役立つこのリンクを見つけました。
http://blog.sqlauthority.com/2009/11/12/sql-server-disable-check-constraint-enable-check-constraint/
制約を有効または無効にできることを知りませんでした。涼しい!
セス
oracle - APEXに電子メールチェック制約を追加する
私はOracleにかなり慣れておらず、APEXにも非常に慣れていません。メールを検証するためにテーブルに制約を追加しようとしています:
今、私が正しければ、これは内部で正常に機能CONSTRAINT <name> CHECK(REGEXP_LIKE(...))
しますが、保存しようとすると、この(紛らわしい)エラーが発生します。
ORA-00920:無効な関係演算子
生成されたクエリに次のものが含まれているためだと思います"CALLER_EMAIL"
。
何か案は?
sql - 最小データ長を指定するSQLServerのVARCHAR列にCHECK制約を作成するにはどうすればよいですか?
VARCHAR(30)
MicrosoftSQLServerデータベースに列があります。列の値が3文字未満にならないようにするCHECK制約を追加したいと思います。私が使わなければならない表現は何ですか?