当前位置: 首页 > 面试题库 >

MySQL表中的常量列值

卢英叡
2023-03-14
问题内容

我在MySQL中有一张表。我想将表的列值设置为常量整数。我怎样才能做到这一点?


问题答案:

不幸的是,MySQL不支持SQL检查约束。您可以出于兼容性原因在DDL查询中定义它们,但是它们只会被忽略。您可以创建BEFORE
INSERT和BEFORE UPDATE触发器,这些触发器会导致错误或在不满足数据要求时将字段设置为其默认值。

因此,您可以在其中找到解决方法MYSQL TRIGGER

样品表:

DROP TABLE IF EXISTS `constantvaluetable`;
CREATE TABLE `constantvaluetable` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `constValue` int(11) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB;

扳机:

DROP TRIGGER IF EXISTS trigger_const_check;
delimiter //
CREATE TRIGGER trigger_const_check BEFORE INSERT ON constantvaluetable 
    FOR EACH ROW 
  BEGIN 
        IF NEW.constValue <> 71 THEN 
        SIGNAL SQLSTATE '45000' SET message_text ='Only allowed value is 71';
        END IF; 
  END //
delimiter ;

测试:

INSERT INTO constantvaluetable(constValue) VALUES(71);

INSERT INTO constantvaluetable(constValue) VALUES(66);

结果:

第一条插入语句将成功。

第二条插入语句将失败。并且将显示以下错误消息:

[Err] 1644-仅允许值为71

注意: 假设您的 CONSTANT 值为71



 类似资料:
  • A表字段:id,name B表字段:id,a_id(A表id),status(0.正常,1禁用) A表B表是一对多关系 要求:查出来A表中非正常的名称(name)列表 A表id在B表中禁用或不存在的关联的数据都属于不正常

  • 问题内容: 疯狂尝试在类型查询中设置变量: 这样我就可以在 我尝试过用不同的格式定义变量,但是没有运气,似乎也找不到上述的特定示例: 没有成功。它要么返回错误,要么忽略值。 问题答案: 您不能使用这样的子句。它在您的子句中编译为 单个 字符串。但是子句需要 单独的 值。 编译为 但应该是 为了克服这个问题,可以使用动态SQL或在MySQL中使用FIND_IN_SET: 但是使用像这样的函数不能使用

  • 我有一个列表的数据集,其中包含其他列表,我想找到前1000个单词 我试过这个,但不起作用: 从集合导入计数器counts_top1000=[逐字,Counter(mainlist).MOST_COMMAN(1000)] 请注意,我的数据集是“mainlist”。 如果你有更多的想法,我将不胜感激。

  • 问题内容: 我想创建一个SQL Server 2012查询,该查询将一个恒定的权限名称列表插入到表RolePermissions中,例如“ ViewUsersPermission”,“ ModifyUsersPermission”。 该表有两列:“ RoleID”(是Roles表的外键)和varchar列“ PermissionTypeName”。 我正在寻找更好的解决方案。我想指定一个权限类型列

  • 问题内容: 我试图将值添加到phpmyadmin中的表中,但出现错误:“字段列表”中的未知列“ …”。 这是我的代码: 因此,当我在上一页的表单中输入fds作为名称时,我得到:“字段列表”中的未知列“ fds”。这以前从未发生过,我也不知道发生了什么。 问题答案: 我认为这 应该

  • 基本React Web应用程序 应用: 使用onMouseEnter和onmouseLeave呈现出与悬停按钮的联系。 问题: 无法更改悬停状态 附加: 如何在团队常量内将悬停状态从true更改为false?我刚反应过来。 我明白改变状态的简单方法,但这对我来说有点复杂。