我想知道如何在表上添加数据库限制。我想将 Oracle 数据库中的表问题简化为
CREATE TABLE TEST_STUDENT
(
STUDENT VARCHAR2(30 CHAR),
SUBJECT VARCHAR2(38) ,
IS_LANG NUMBER(1,0)
);
学生可以有任意数量的科目,但其中只有一个可以是语言 (IS_LANG)。
有效数据是
Insert into TEST_STUDENT (STUDENT,SUBJECT,IS_LANG) values ('John','Math',);
Insert into TEST_STUDENT (STUDENT,SUBJECT,IS_LANG) values ('John','Science',);
Insert into TEST_STUDENT (STUDENT,SUBJECT,IS_LANG) values ('John','French',1);
Insert into TEST_STUDENT (STUDENT,SUBJECT,IS_LANG) values ('Lily','Math',);
Insert into TEST_STUDENT (STUDENT,SUBJECT,IS_LANG) values ('Lily','English',1);
但是,我应该不能像表格一样插入新数据,比如
Insert into TEST_STUDENT (STUDENT,SUBJECT,IS_LANG) values ('John','English',1);
或者
Insert into TEST_STUDENT (STUDENT,SUBJECT,IS_LANG) values ('Lily','French',1);
我不想在这里介绍触发器,除非它是唯一的方法。我希望有这个限制,因为在实际的软件中会有多个客户端实现试图将数据插入到这个表中。