1

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

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

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

哦,是的,这与我的作业问题有关,但我已将上面的示例修改为不同。我不想要答案(虽然他们很受欢迎,但我想学习),我只想要指导。提前致谢。

4

2 回答 2

4

SQL 支持一种称为“检查约束”的功能,因此您可以声明一个必须为真的表达式,否则该行无效并且无法插入。即CHECK Name IS NULL AND Gender IS NULL OR Name IS NOT NULL AND Gender IS NOT NULL

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

在 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 回答