問題タブ [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.
design-patterns - SQL の LIKE 制約から返された列値の一致
返された列の値を一致させようとしていますが、パターン マッチングの結果として値が返されます。
ご覧のとおり、いくつかの列の値を取得しようとしていますが、Java derby ツールは次のように述べています。
エラー 42884: 互換性のある引数を持つタイプ 'FUNCTION' の 'LIKE' という名前の許可されたルーチンが見つかりませんでした。
どうすればこれを手に入れることができますか?
c# - C# での静的メソッドの存在が必要
特定のドメイン ロジックをサポートするプロパティとメソッドの共通セットを持つオブジェクトのグループが与えられた場合、これらのオブジェクトに特定の静的メソッドの存在を強制する方法はありますか?
インターフェイスを実装してもこれは達成されず (メソッドはインスタンスのみ)、静的メソッドはオーバーライド、仮想、または抽象としてマークすることはできないと結論付けました。
前もって感謝します。
sql-server - SQL 2005 でクラスター化された主キーを削除するとどうなるか
私は PK 制約 (2 つの列のクラスター化インデックス) を持っていますが、これは削除中です。コマンドは 1 時間後も実行中です。制約を削除しているだけなので、操作はほぼ瞬時になると思っていたでしょう。誰かが私に PK を落としたときに実際に何が起こっているのか説明してもらえますか?
mysql - MySQL とチェック制約
MySQL を使用し、PHP フロント エンドで使用されるアプリケーションを継承しました。このシステムを書いた人は、ユーザーが入力するコードが有効であることを保証するためにかなり複雑な努力をしました。つまり、これらのコードは別のテーブルにも存在するということです。
これを最初に見たとき、なぜ彼は CHECK 制約を使用せず、dbms にこれを整理させなかったのか疑問に思いました。dbms の 1 か所だけではなく、同じチェックを実装するさまざまなプログラムがたくさんあるというビジョンがあります。そして、MySQL がチェック制約をサポートしていないことがわかりました (厳密にはそうではありません。構文はサポートされていますが、無視されているだけです)。
MySQL でチェック制約を実装する方法はありますか?
ヒント、提案などは素晴らしいでしょう。
c# - ValueTypes、Strings、および ValueTypes の Nullable に対する一般的な制約
ValueTypes、Strings、または Nullable 値の型をチェックするように、ジェネリック メソッドに制約を追加しようとしています。
問題はそれです:
- 値の型は支柱です
- 文字列は不変の参照型です
- nullable は値型ですが、「where S : struct」型制約では受け入れられません。
一般的な制約でこれらの型のみを受け入れる方法があるかどうか、誰かが知っていますか?
Expression<Func<T, S>
問題は、特定のオブジェクトのこれらの型のプロパティを表すパラメーターを受け入れようとしていることです。
機能は次のようになります (コードは意味をなさないことに注意してください。私が探しているものを簡単に理解するためのものです)。
上記の 3 つの呼び出しはすべて受け入れられる必要がありますが、次の呼び出しは受け入れられません。
前もって感謝します
更新: アントンとマークに感謝します。MyGenericMethod には、追加のパラメーターを受け入れる 4 つの異なる署名があります。そのため、既存の 4 つのそれぞれに対して 3 つの異なる (構造体、nullable、文字列) を作成するという考えは好きではありません。これは維持するのに悪夢です!
sql - 制約を一時的にオフにする(MS SQL)
すべてのDBの制約(テーブルの関係など)を一時的にオフにする方法を探しています。
あるDBのテーブルを別のDBに(INSERTを使用して)コピーする必要があります。コマンドを適切な順序で実行することで(関係を壊さないように)それを達成できることを私は知っています。
ただし、制約のチェックを一時的にオフにして、操作の終了後にオンに戻すことができれば、より簡単になります。
これは可能ですか?
sql-server - SQLCLR統合によるチェック制約の実装
制約された列ごとにCLR関数を呼び出すだけの「チェック」制約を実装しています。
各CLR関数は、その列に関連付けられたユーザー定義のC#データクラスのインスタンスを構築しようとする1行または2行のコードです。たとえば、「Score」クラスには、構築が失敗した場合(つまり、スコアが有効な範囲外の場合)に意味のあるエラーメッセージをスローするコンストラクターがあります。
まず、そのアプローチについてどう思いますか? 私にとっては、データ型をC#で一元化し、アプリケーション全体で利用できるようにすると同時に、データベース内で同じ制約を適用するため、プログラマー以外の人が行う可能性のあるManagementStudioでの無効な手動編集を防ぎます。これまでのところうまく機能していますが、アセンブリを更新すると制約が無効になり、すべての制約を再チェックする必要があります(これは完全に合理的です)。私はDBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS
、すべてのテーブルのデータが有効および無効の制約に対して引き続き有効であることを確認し、エラーがなくなるまで必要に応じて修正を行うために使用します。次に、を介してすべてのテーブルの制約を再度有効にしますALTER TABLE [tablename] WITH CHECK CHECK CONSTRAINT ALL
。 すべてのテーブルのすべてのチェック制約をチェックして再度有効にするT-SQLステートメントはありますか、それともテーブルごとに再度有効にする必要がありますか?
最後に、チェック制約で使用されるCLR関数については、次のいずれかを実行できます。
- 各関数にtry/catchを含めて、データ構築エラーをキャッチし、エラーの場合はfalseを返し、成功の場合はtrueを返し、CLRがデータベースエンジンでエラーを発生させないようにします。
- try / catchを省略し、インスタンスを作成してtrueを返すだけで、前述の「意味のある」エラーメッセージがデータベースエンジンで発生するようになります。
私の関数はエラーコードなしで単純であり、management studioを使用している人が無効な列編集を行うと、"Value for type X didn't match regular expression '^p[1-9]\d?$'"
「制約違反」などの一般的なSQLエラーではなく、CLRから意味のあるメッセージが表示されるため2が好きです。 CLRエラーをSQLServerに渡すことで深刻な悪影響がありますか、それとも制約違反に起因する他の挿入/更新の失敗と同じですか?
ruby - 定期的なイベントで競合を検出する
定期的なエントリ間の競合をチェックする必要があるカレンダー アプリケーションを作成しています。各 Entry オブジェクトには、範囲の配列を返す recurrences() メソッドがあります。各範囲には、将来の各発生の開始時刻と終了時刻が含まれています。
新しいエントリと既存のエントリの競合を確認する必要があります。これを行うには、新しいエントリの将来の発生が既存のエントリの将来の発生と衝突しないことを確認します。
recurrences() のデフォルトでは、開始時刻から開始時刻 + 1 年までのすべての発生を返します
問題は、この方法があまり効率的でないことです。それぞれが 1 年以上毎日繰り返される 2 つのエントリだけを比較すると、365 * 365 の比較になります (私のマシンでは 4 秒以上かかります)。新しいエントリを比較する既存のエントリがいくつもある可能性があるため、現在の方法は役に立ちません。
私はコンピューター サイエンスや数学のバックグラウンドを持っていませんが、アルゴリズムに関するさまざまな教科書を読んでいますが、メソッドを最適化する方法を見つけることができませんでした。他に何かアイデアはありますか?
ありがとう
デイブ