如果我有一个trigger before the update表,我怎么能抛出一个阻止该表更新的错误?
在进行子类化时db.models.Model,有时需要添加额外的检查/约束.
例如,我有一个Event带start_date和的模型end_date.
我想在字段或模型中添加验证,以便end_date > start_date.
有多少种方法可以做到这一点?
至少我知道这可以models.Model在ModelForm验证内部完成.
但是如何依附于田野和models.Model?
可能重复:
MySQL中的CHECK约束无效
我是学生,现在我必须弄清楚检查的意义.我们有一些代码:
CHECK (CHAR_LENGTH(PLZ) = 4)
Run Code Online (Sandbox Code Playgroud)
现在我必须弄清楚它到底在做什么.问题是我在互联网上找不到任何东西(或者我使用谷歌做了一些完全错误的事情).我创建了这个代码来测试它:
CREATE TABLE Test(
ID CHAR(4),
CHECK (CHAR_LENGTH(ID) = 4)
);
INSERT INTO Test(ID) VALUES ('12345');
Run Code Online (Sandbox Code Playgroud)
问题是我无法找到与CHECK约束删除行的任何区别.现在我问你?我使用与否的区别是什么.
我正在设计一个需要非常灵活的配方数据库,因为它将直接与我们的后台库存系统进行通信.这是我到目前为止关于表格的内容:
基本上,配方行项目表需要能够链接到成分表或配方表,具体取决于需要哪个行项目,我想知道什么是最有效的处理方式.
非常感谢你提前!
我想在MySQL中使用CHECK约束,但它不受支持.(与其他RDBMS不同,它会理解但不强制执行CHECK.)
我看过一些触发器的解决方法.但他们倾向于为相关字段设置默认值,而不是返回错误.
如果不满足条件,是否可以构造一个返回错误的触发器?
最终我想要一个复制CHECK约束的触发器.
我在表格中有一个名为"患者类型"的列.我想确保只有2个值可以插入到列中,opd或者被允许,除此之外,所有其他输入都无效.
以下是我想要的一个例子

如何确保该列仅接受"opd"或"已接纳"作为"患者类型"列的数据.
(对不起,如果这是一个重复的帖子,但我似乎找不到这个问题的例子)
我有一个有 4 列的 mysql 表,如下所示:
SomeTable
=========
ID (int)
name (varchar(255))
column1 (varchar(255))
column2 (double)
Run Code Online (Sandbox Code Playgroud)
我现在想要做的是添加一个约束,以便始终有一列(column1 或 column2)具有空值。我尝试了以下方法:
ALTER TABLE mytable
ADD CHECK (
(column1 IS NOT NULL && column2 IS NULL) ||
(column2 IS NOT NULL && column1 IS NULL)
)
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,因为我仍然可以遇到这样的情况:
CASE1:
------
name: bla
column1: null
column2: null
CASE2:
------
name: bla
column1: somevalue
column2: 123
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它工作,以便在我尝试 case1 和 case2 时出现错误?
(另外:如果我没记错的话:我使用的约束可以缩短,但我不记得它是如何完成的。所以如果有人帮助我,我会很高兴!)
这里我想在记录插入数据库之前创建2个CHECK约束.
ALTER TABLE SubjectEnrollment
ADD CONSTRAINT register CHECK (register <= classSize AND register >=0),
ADD CONSTRAINT available CHECK (available <= classSize AND available >= 0);
Run Code Online (Sandbox Code Playgroud)
当我在MySql Workbench中键入此语法时,它会抛出"语法错误:意外'检查'(检查)'.我应该如何使用TRIGGER添加这些?
谢谢.
我有一个与此模型类似的模型:
class Person(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
field1= models.IntegerField(null=True)
field2 = models.IntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)
至少一个字段,field1或者field2不能为null。如何在模型中验证?
MySQL是否支持检查约束?
我可以在MySQL中执行以下脚本而不会出错.
ALTER TABLE EMP_DB_DESIGN_EXCEL ADD (
CONSTRAINT CHK_EMP_IS_ACTIVE CHECK (IS_ACTIVE IN ('Y','N')));
Run Code Online (Sandbox Code Playgroud)
但是,如果我查询它没有反映:
SELECT * FROM information_schema.TABLE_CONSTRAINTS T where t.table_name='EMP_DB_DESIGN_EXCEL';
Run Code Online (Sandbox Code Playgroud) mysql ×8
database ×2
django ×2
sql ×2
triggers ×2
constraints ×1
django-forms ×1
input ×1
python ×1
python-3.x ×1