gpt4 book ai didi

Mysql - 调度约束的帮助

转载 作者:行者123 更新时间:2023-11-29 22:19:13 26 4
gpt4 key购买 nike

我在我的vb程序中输入时间表并将其存储在mysql中,如果我输入的数据与db中的记录冲突,它应该无法存储它。

注意:我正在使用 SELECT FROM 查询检查冲突。如果它在数据库中搜索某些内容,那么它不会存储它。

例如。我的数据库中有这条记录

| day | tstart | tend | class | room | teacher_id | subject |
| M | 6:00 | 7:00 | 1A | 101 | 0001 | ENGL1 |

现在如果我输入(例如)

M - 6:00 - 7:00 - 1A - 102 - 0001 - ENGL1

它将它存储在数据库中,这是不应该的,任何人都可以帮助我解决这些限制吗?

-同一位老师不应同时授课

这是我正在使用的选择查询

"SELECT * FROM tbl_schedule WHERE (day='" & day(getDay) & "' AND time_start='" & timeStart & "' AND room_no='" & roomlist(roomNumber) & "') OR (day='" & day(getDay) & "' AND time_start='" & timeStart & "' AND room_no='" & roomlist(roomNumber) & "' AND teacher_id='" & teacherlist(tId) & "')"

编辑:不要介意示例和代码中的列名称,我只是将其缩短,此外,类(class)和房间总是不同的,因此我没有将其放入查询中(自动调度)

EDIT2:如果使用查询获取了一行,则不应将数据存储在数据库中,如果没有获取任何内容,则它将存储。

最佳答案

在共同构成冲突的字段上设置 UNIQUE 约束或 KEY,这将阻止添加的数据与现有数据发生冲突。

参见https://dev.mysql.com/doc/refman/5.5/en/partitioning-limitations-partitioning-keys-unique-keys.html了解完整详细信息。

例如

CREATE TABLE t1 (
col1 INT NOT NULL,
col2 INT NOT NULL,
col3 INT NOT NULL,
col4 INT NOT NULL,
UNIQUE KEY (col1, col2)
)

> INSERT INTO t1 set col1='1', col2='2', col3='3', col4='4';
data inserted

> INSERT INTO t1 set col1='3', col2='2', col3='3', col4='4';
data inserted

> INSERT INTO t1 set col1='1', col2='2', col3='5', col4='6';
not inserted - entry with col1=1, col2=2 already exists

关于Mysql - 调度约束的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com