Mysql - 帮助安排约束

时间:2015-06-18 11:21:26

标签: mysql

我在我的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中,如果没有提取任何内容,它将存储。

1 个答案:

答案 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