我在我的vb程序中输入日程表并将其存储在mysql中,如果我输入的数据与db中的记录冲突,则它应该无法存储它。
注意:我使用SELECT FROM查询检查冲突。如果它在db中搜索某些内容,那么它就不会存储它。
离。我在我的数据库中有这个记录
| 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
它将它存储在db中,它不应该,任何人都可以帮助我解决这些问题吗?
- 同一位老师不应该同时教学
这是我使用
的选择查询"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) & "')"
编辑:不要介意示例和我的代码中的列名,我只是把它缩短了,而且,类和房间总是不同所以我没有把它放在查询中(自动调度)
EDIT2:如果使用查询提取了一行,它不应该将数据存储在db中,如果没有提取任何内容,它将存储。
答案 0 :(得分:0)
在一起构成冲突的字段上设置UNIQUE
约束或KEY
,这将阻止数据与现有数据发生冲突。
有关详细信息,请参阅https://dev.mysql.com/doc/refman/5.5/en/partitioning-limitations-partitioning-keys-unique-keys.html。
e.g。
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