Mysql 两列SQL的共存

Mysql 两列SQL的共存,mysql,sql,Mysql,Sql,我是SQL新手(是的,只有一周),我正在自学。所以,我真的需要帮助来解决这个问题: 当另一列也为NULL时,如何将(表中的)列设置为NULL 例如: 以姓名和性别作为列的person表。为了有性别,“姓名”列还必须有一个条目。如果名称为空,则不允许在“性别”下插入 哦,是的,这与我的家庭作业问题有关,但我修改了上面的例子,使之不同。我不想要答案(虽然他们很受欢迎,但我想学习),我只想要指导。提前感谢。SQL支持一个名为“检查约束”的功能,以便您可以声明一个必须为true的表达式,否则该行无效且无

我是SQL新手(是的,只有一周),我正在自学。所以,我真的需要帮助来解决这个问题:

当另一列也为NULL时,如何将(表中的)列设置为NULL

例如: 以姓名和性别作为列的person表。为了有性别,“姓名”列还必须有一个条目。如果名称为空,则不允许在“性别”下插入


哦,是的,这与我的家庭作业问题有关,但我修改了上面的例子,使之不同。我不想要答案(虽然他们很受欢迎,但我想学习),我只想要指导。提前感谢。

SQL支持一个名为“检查约束”的功能,以便您可以声明一个必须为true的表达式,否则该行无效且无法插入。也就是说,
检查姓名是否为空,性别是否为空,或者姓名是否为空,性别是否为空

但不幸的是,MySQL不支持检查约束。从标准的角度来看,SQL的许多特性是可选的,并且并非所有RDBMS实现都支持所有特性。甚至还有一些SQL特性是任何品牌的RDBMS都不支持的

在MySQL中实现这一点的唯一方法是使用。在插入或更新之前,如果Name为null,则强制性别也为null


如果Name不为null,Gender为null,那么我假设该行无效,因此您必须使用a来中止插入或更新。

SQL支持名为“check constraints”的功能,以便您可以声明一个必须为true的表达式,否则该行无效且无法插入。也就是说,
检查姓名是否为空,性别是否为空,或者姓名是否为空,性别是否为空

但不幸的是,MySQL不支持检查约束。从标准的角度来看,SQL的许多特性是可选的,并且并非所有RDBMS实现都支持所有特性。甚至还有一些SQL特性是任何品牌的RDBMS都不支持的

在MySQL中实现这一点的唯一方法是使用。在插入或更新之前,如果Name为null,则强制性别也为null


如果名称不为null,性别为空,则我假设该行无效,因此您必须使用a中止插入或更新。

写入值到表中的存储过程可以帮助您完成此操作。请参见下面的示例代码:

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

为将值插入表而编写的存储过程可以帮助您做到这一点。请参见下面的示例代码:

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

当运行语句的另一列也为NULL时,您是希望将表中的列设置为NULL,还是只是想在insert数据表上设置这种行为?只是想知道,当运行语句的另一列也为空时,您是想将表中的列设置为空,还是想在插入数据的表上寻找设置这种行为的方法?只是想知道