繁体   English   中英

两列SQL共存

[英]Coexistence of two columns SQL

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

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

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

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

SQL支持一个名为“检查约束”的功能,以便您可以声明一个必须为true的表达式,否则该行无效且无法插入。 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,那么我假设该行无效,因此您必须使用信号中止插入或更新。

为将值插入表而编写的存储过程可以帮助您解决此问题。 请看下面的示例代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM