create table Game
(Gid char(6) primary key,
Tnumberh varchar(4) not null,
Tnumbera varchar(4) not null,
Rid char(18) not null,
Gcode char(10) not null,
Gdate date,
foreign key (Tnumberh) references Team(Tnumber),
foreign key (Tnumbera) references Team(Tnumber),
foreign key (Rid) references referee(Rid)
);
假設創建這個表,怎么才能使Tnumberh 與Tnumbera的資料不能相同
uj5u.com熱心網友回復:
觸發器insert update時判斷兩欄位值是否相同,相同就提示無法insert,update
uj5u.com熱心網友回復:
還可以添加約束,可以一試alter table game add constraint ck_ha check(Tnumberh <> Tnumbera);
uj5u.com熱心網友回復:
-- 使用 check 約束
SQL>
SQL> create table test(a int, b int);
Table created
SQL> alter table test add constraint chk_a_b check (a<>b);
Table altered
SQL> -- 這條成功
SQL> insert into test values(100,200);
1 row inserted
SQL> -- 這條失敗
SQL> insert into test values(100,100);
insert into test values(100,100)
ORA-02290: 違反檢查約束條件 (TEST_USER.CHK_A_B)
SQL> col a format a10;
SQL> col b format a10;
SQL> select * from test;
A B
---------- ----------
100 200
SQL> drop table test purge;
Table dropped
SQL>
uj5u.com熱心網友回復:
1、業務系統中限定2、觸發器限定
3、欄位的check約束限定
alter table Game
add constraint CK1
check (Tnumberh !=Tnumbera);
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
1、前臺頁面JS判斷,簡單效率也高2、CHECK不錯
3、觸發器效率太低,對這個問題不太適用
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/107667.html
標籤:基礎和管理
上一篇:求201612某部門的上月結存(存休+特休)-本月請假+本月加班=本月結存
下一篇:求助全量表增量表的設計
