1

私は SQL が初めてで (はい、わずか 1 週間です)、これを独学で学んでいます。したがって、この問題を解決するには本当に助けが必要です。

別の列も NULL の場合、(テーブル内の) 列を NULL に設定するにはどうすればよいですか?

例: Name と Gender を列として持つ person テーブル。性別を入力するには、[名前] 列にもエントリが必要です。Name が NULL の場合、Gender の下に挿入できません。

ああ、はい、これは私の宿題の質問に関連していますが、上記の例を別のものに変更しました。私は答えが欲しいのではなく (歓迎されますが、私は学びたいです)、ただガイダンスが欲しいだけです。前もって感謝します。

4

2 に答える 2

4

SQL は「チェック制約」と呼ばれる機能をサポートしているため、true でなければならない式を宣言できます。そうでない場合、行は無効で挿入できません。すなわちCHECK Name IS NULL AND Gender IS NULL OR Name IS NOT NULL AND Gender IS NOT NULL

残念ながら、MySQL はチェック制約をサポートしていません。SQL の多くの機能は、標準の観点からはオプションであり、すべての RDBMS 実装がすべての機能をサポートしているわけではありません。RDBMS のどのブランドもサポートしていないSQL の機能がいくつかあります。

MySQL でこれを行う唯一の方法は、トリガーを使用することです。挿入または更新の前に、Name が null の場合は、Gender も強制的に null にします。

Name が null ではなく、Gender が null の場合、行が無効であると想定されるため、シグナルを使用して挿入または更新を中止する必要があります。

于 2013-01-28T04:24:36.733 に答える
0

テーブルに値を挿入するために作成されたストアドプロシージャは、これに役立ちます。以下のサンプルコードを参照してください。

CREATE PROCEDURE InsertIntoTable
(
 @NAME NVARCHAR(20) = NULL,
 @GENDER NVARCHAR(20) = NULL
)
AS
BEGIN
    DECLARE @NewGender NVARCHAR(20)

    IF(@NAME IS NULL)
        SET @NewGender = NULL
    ELSE
        SET @NewGender = @GENDER

    INSERT INTO Table1 VALUES(@NAME, @NewGender)
END
于 2013-01-28T04:34:17.430 に答える