Oracle开发 之 主-外键约束FK及约束的修改
试验环境:
1)数据库版本:oracle 11.2.0.4
2)建表脚本:以scott的dept及emp表为基础。
父表:dept
-- Create table create table DEPT ( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(13) ) -- Create/Recreate primary, unique and foreign key constraints alter table DEPT add constraint PK_DEPT primary key (DEPTNO) using index; |
子表emp:
-- Create table create table EMP ( EMPNO NUMBER(4) not null, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) ) -- Create/Recreate primary, unique and foreign key constraints alter table EMP add constraint PK_EMP primary key (EMPNO) using index ; alter table EMP add constraint FK_DEPTNO foreign key (DEPTNO) references DEPT (DEPTNO); |
一、主-外键约束FK
主-外键约束指的是子表的某一字段的内容取值范围必须由主表指定。
1)创建2张测试表:
create table f1 as select * from dept;
create table s1 as select * from emp;
说明:目前仅仅是复制了表结构及数据,未建立任何约束。
2)在未给f1.deptno创建主键或唯一约束,首选为s1.deptno创建外键:
SQL> alter table S1 add constraint FK_DEPTNO_S1 foreign key (DEPTNO) references F1 (DEPTNO);
alter table S1 add constraint FK_DEPTNO_S1 foreign key (DEPTNO) references F1 (DEPTNO)
*
ERROR at line 1:
ORA-02270: no matching unique or primary key for this column-list
结论:在子表中设置的与父表关联的外键字段时,这个字段在父表中必须具有主键约束或唯一约束才可以设置成功。否则无法设置外键约束。
3)首先为F1.DEPTNO创建主键约束,然后再在S1.DEPTNO设置依赖于F1的外键,即可创建成功。
SQL> alter table F1 add constraint PK_F1 primary key (DEPTNO);
Table altered.
SQL> alter table S1 add constraint FK_DEPTNO_S1 foreign key (DEPTNO) references F1 (DEPTNO);
Table altered.
4)删除F1的约束pk_f1:
SQL> alter table f1 drop constraint pk_f1;
alter table f1 drop constraint pk_f1
*
ERROR at line 1:
ORA-02273: this unique/primary key is referenced by some foreign keys
结论:若想删除被外键依赖的主键信息时,需要首先删除与其关联的外键,然后再删除主键:
SQL> alter table s1 drop constraint fk_deptno_s1;
Table altered.
SQL> alter table f1 drop constraint pk_f1;
Table altered.
5)首先为F1.DEPTNO创建唯一约束,然后再在S1.DEPTNO设置依赖于F1的外键,即可创建成功。
SQL> alter table F1 add constraint UK_F1 unique(deptno);
Table altered.
SQL> alter table S1 add constraint FK_DEPTNO_S1 foreign key (DEPTNO) references F1 (DEPTNO);
Table altered.
6)与步骤4相同:
SQL> alter table f1 drop constraint uk_f1;
alter table f1 drop constraint uk_f1
*
ERROR at line 1:
ORA-02273: this unique/primary key is referenced by some foreign keys
7)总结:外键依赖于父表字段的主键约束或唯一约束,有外键约束时,如果想删除主键或唯一约束需要先删除其外键约束。
8)针对于父表的delete或drop操作,如存在依赖关系需要首先处理子表数据,然后再处理父表数据。
9)针对于对父表的delete操作,外键设置on delete cascade:
create table f1 as select * from dept;
create table s1 as select * from emp;
alter table F1 add constraint PK_F1 primary key (DEPTNO)
alter table S1 add constraint FK_DEPTNO_S1 foreign key (DEPTNO) references F1 (DEPTNO) on delete cascade;
查询现在F1和S1表的数据:
SQL> select * from f1;
DEPTNO DNAME LOC
---------- ------------------------------------------ ---------------------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from s1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980/12/17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981/02/20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981/02/22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981/04/02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981/09/28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981/05/01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981/06/09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987/04/19 00:00:00 3000 20
7839 KING PRESIDENT 1981/11/17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981/09/08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987/05/23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981/12/03 00:00:00 950 30
7902 FORD ANALYST 7566 1981/12/03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982/01/23 00:00:00 1300 10
14 rows selected.
删除F1表中10部门数据:
SQL> delete from f1 where deptno=10;
1 row deleted.
SQL> select * from f1;
DEPTNO DNAME LOC
---------- ------------------------------------------ ---------------------------------------
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from s1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980/12/17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981/02/20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981/02/22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981/04/02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981/09/28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981/05/01 00:00:00 2850 30
7788 SCOTT ANALYST 7566 1987/04/19 00:00:00 3000 20
7844 TURNER SALESMAN 7698 1981/09/08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987/05/23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981/12/03 00:00:00 950 30
7902 FORD ANALYST 7566 1981/12/03 00:00:00 3000 20
11 rows selected.
SQL> commit;
Commit complete.
结论:在外键中使用on delete cascade时,删除父表的数据时会同时删除与父表数据相关联的子表数据。
10)针对于对父表的delete操作,外键设置on delete set null:
create table f1 as select * from dept;
create table s1 as select * from emp;
alter table F1 add constraint PK_F1 primary key (DEPTNO);
alter table S1 add constraint FK_DEPTNO_S1 foreign key (DEPTNO) references F1 (DEPTNO) on delete set null;
查询F1和S1现在数据:
SQL> select * from f1;
DEPTNO DNAME LOC
---------- ------------------------------------------ ---------------------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from s1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980/12/17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981/02/20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981/02/22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981/04/02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981/09/28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981/05/01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981/06/09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987/04/19 00:00:00 3000 20
7839 KING PRESIDENT 1981/11/17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981/09/08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987/05/23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981/12/03 00:00:00 950 30
7902 FORD ANALYST 7566 1981/12/03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982/01/23 00:00:00 1300 10
14 rows selected.
删除F1表中10部门的数据:
SQL> delete from f1 where deptno=10;
1 row deleted.
SQL> select * from f1;
DEPTNO DNAME LOC
---------- ------------------------------------------ ---------------------------------------
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from s1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980/12/17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981/02/20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981/02/22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981/04/02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981/09/28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981/05/01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981/06/09 00:00:00 2450
7788 SCOTT ANALYST 7566 1987/04/19 00:00:00 3000 20
7839 KING PRESIDENT 1981/11/17 00:00:00 5000
7844 TURNER SALESMAN 7698 1981/09/08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987/05/23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981/12/03 00:00:00 950 30
7902 FORD ANALYST 7566 1981/12/03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982/01/23 00:00:00 1300
14 rows selected.
SQL> commit;
Commit complete.
结论:在外键关联中使用on delete set null时,删除父表数据并不会同时删除与之关联的子表数据,而是将外键关联字段自动修改成null。
11)外键管理存在时,drop父表操作:
create table f1 as select * from dept;
create table s1 as select * from emp;
alter table F1 add constraint PK_F1 primary key (DEPTNO);
alter table S1 add constraint FK_DEPTNO_S1 foreign key (DEPTNO) references F1 (DEPTNO);
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE from user_constraints where table_name in ('S1','F1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT
---------- -------------------- ----------
F1 PK_F1 P
S1 FK_DEPTNO_S1 R
删除F1表:
SQL> drop table F1;
drop table F1
*
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys
SQL> drop table f1 cascade constraint;
Table dropped.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE from user_constraints where table_name in ('S1','F1');
no rows selected
SQL> select * from tab where tname='S1';
TNAME TABTYPE CLUSTERID
------------------------------------------------------------------------------------------
S1 TABLE
结论:在drop父表时,如果使用cascade constraint时,会删除父表同时删除子表的外键约束信息,但是不会删除子表信息。
二、修改约束
1、为表add约束:
>语法:alter table table_name add constraint
创建测试表:
create table f1 as select * from dept;
create table s1 as select * from emp;
alter table F1 add constraint PK_F1 primary key (DEPTNO);
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE from user_constraints where table_name in ('S1');
no rows selected
此时S1表没有任何字段。
1)为表S1.EMP添加主键约束:
SQL> alter table s1 add constraint pk_s1 primary key (empno);
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT
---------- -------------------- ----------
S1 PK_S1 P
2)为表S1.SAL增加检查约束:在表中add约束时首先要保证已有数据没有违反约束。
SQL> alter table s1 add constraint ck_s1 check(sal > 100);
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT
---------- -------------------- ----------
S1 CK_S1 C
S1 PK_S1 P
3)增加外键约束:
SQL> alter table s1 add constraint fk_s1 foreign key(deptno) references f1(deptno);
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT
---------- -------------------- ----------
S1 CK_S1 C
S1 FK_S1 R
S1 PK_S1 P
4)增加唯一约束:
SQL> alter table s1 add constraint uk_s1 unique(ename);
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT
---------- -------------------- ----------
S1 CK_S1 C
S1 FK_S1 R
S1 UK_S1 U
S1 PK_S1 P
5)增加非空约束:不能通过alter table table_name add constraint命令添加,只能通过修改表的方式增加:
SQL> alter table s1 modify(SAL NUMBER(7,2) not null);
Table altered.
create table S1
(
EMPNO NUMBER(4) not null,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2) not null,
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
)
2、启用/禁用约束
>禁用约束语法:alter table table_name disable constraint cons_name [cascade];
>启用约束语法:alter table table_name enable constraint cons_name;
1)禁用表S1的约束
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
S1 CK_S1 C ENABLED
S1 FK_S1 R ENABLED
S1 UK_S1 U ENABLED
S1 PK_S1 P ENABLED
SQL> ALTER TABLE S1 DISABLE CONSTRAINT CK_S1;
Table altered.
SQL> ALTER TABLE S1 DISABLE CONSTRAINT UK_S1;
Table altered.
SQL> ALTER TABLE S1 DISABLE CONSTRAINT PK_S1;
Table altered.
SQL> ALTER TABLE S1 DISABLE CONSTRAINT FK_S1;
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
S1 CK_S1 C DISABLED
S1 FK_S1 R DISABLED
S1 UK_S1 U DISABLED
S1 PK_S1 P DISABLED
2)启用表S1约束
SQL> ALTER TABLE S1 ENABLE CONSTRAINT PK_S1;
Table altered.
SQL> ALTER TABLE S1 ENABLE CONSTRAINT CK_S1;
Table altered.
SQL> ALTER TABLE S1 ENABLE CONSTRAINT UK_S1;
Table altered.
SQL> ALTER TABLE S1 ENABLE CONSTRAINT FK_S1;
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
S1 CK_S1 C ENABLED
S1 FK_S1 R ENABLED
S1 UK_S1 U ENABLED
S1 PK_S1 P ENABLED
3)禁用F1表上的pk_f1约束
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
S1 CK_S1 C ENABLED
S1 FK_S1 R ENABLED
S1 UK_S1 U ENABLED
S1 PK_S1 P ENABLED
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('F1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
F1 PK_F1 P ENABLED
SQL> ALTER TABLE F1 DISABLE CONSTRAINT PK_F1;
ALTER TABLE F1 DISABLE CONSTRAINT PK_F1
*
ERROR at line 1:
ORA-02297: cannot disable constraint (SCOTT.PK_F1) - dependencies exist
注意:此处因为PK_F1存在外键约束,所以禁止禁用PK_F1约束。
SQL> ALTER TABLE F1 DISABLE CONSTRAINT PK_F1 CASCADE;
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('F1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
F1 PK_F1 P DISABLED
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
S1 CK_S1 C ENABLED
S1 FK_S1 R DISABLED
S1 UK_S1 U ENABLED
S1 PK_S1 P ENABLED
注意:禁用父表带有外键的约束时,可以采用cascade方式禁用约束,该方式同时也会禁用掉子表的外键约束。
3、删除约束:
语法:alter table table_name drop constraint cons_name [cascade];
1)删除S1中非外键约束
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
S1 CK_S1 C ENABLED
S1 FK_S1 R ENABLED
S1 UK_S1 U ENABLED
S1 PK_S1 P ENABLED
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('F1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
F1 PK_F1 P ENABLED
SQL> ALTER TABLE S1 DROP CONSTRAINT CK_S1;
Table altered.
SQL> ALTER TABLE S1 DROP CONSTRAINT UK_S1;
Table altered.
SQL> ALTER TABLE S1 DROP CONSTRAINT PK_S1;
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
S1 FK_S1 R ENABLED
S1 SYS_C0019909 C ENABLED
2)删除F1表中的pk_f1约束
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
S1 FK_S1 R ENABLED
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('F1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
F1 PK_F1 P ENABLED
SQL> ALTER TABLE F1 DROP CONSTRAINT PK_F1;
ALTER TABLE F1 DROP CONSTRAINT PK_F1
*
ERROR at line 1:
ORA-02273: this unique/primary key is referenced by some foreign keys
注意:不允许删除带有外键约束的主表约束。
SQL> ALTER TABLE F1 DROP CONSTRAINT PK_F1 CASCADE;
Table altered.
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('F1');
no rows selected
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('S1');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
no rows selected
注意:cascade删除父表约束时,会同时删除子表约束。
三、查看约束信息:
通过user_constraint和user_cons_columns字典表查询约束信息,同时也以次字典表为基础编写约束日常监控脚本:
>CONSTRAINT_TYPE类型:P、R、C、C(not null)、Q
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('EMP');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
EMP PK_EMP P ENABLED
EMP FK_DEPTNO R ENABLED
SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS from user_constraints where table_name in ('DEPT');
TABLE_NAME CONSTRAINT_NAME CONSTRAINT STATUS
---------- -------------------- ---------- ------------------------
DEPT PK_DEPT P ENABLED
Oracle开发 之 主-外键约束FK及约束的修改的更多相关文章
- oracle主从表主外键对应关系
一.首先让我们来了解下什么是主外键? 1.主键:唯一标识数据表中的某一行 1) 一个表中只能有一个主键.如果在其他字段上建立主键,则原来的主键就会取消.在ACCESS中,虽然主键不是必需的,但最好为每 ...
- Sql Server有主外键关系时添加、删除数据
当表之间有主外键关系时删除数据会被约束,添加.删除失败 解决办法,我们可以先把主外键关系的检查约束给关掉 → 然后删除数据 → 之后再把约束打开 查询出关掉所有外键约束的语句 SELECT 'ALTE ...
- oracle 查看主外键约束
select a.constraint_name, a.table_name, b.constraint_name from user_constraints a, user_constraints ...
- 经典SQL语句大全_主外键_约束
一.基础(建表.建约束.关系) 约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整 ...
- 5.oracle建表的时候同时创建主键,外键,注释,约束,索引
5.oracle建表的时候同时创建主键,外键,注释,约束,索引 1 --主键 )); ) ,constraint aba_pr primary key(id,name1)); --外键 )); --复 ...
- 批量删除MSSQL 中主外键约束
转自: http://www.maomao365.com/?p=813 在制作 MSSQL同步工具的时候,发现由于主外键的约束,导致数据同步异常,所有我们需要把 读数据库里面的主外键约束,进行批量删除 ...
- C# 如何物理删除有主外键约束的记录?存储过程实现
十年河东,十年河西,莫欺少年穷 本篇主旨是如何物理删除有主外键约束的记录!那么,我们从主外键走起! 下面新建三张有主外键约束的表,分别为:系/学院表,专业班表,学生表,如下: CREATE TABLE ...
- MySQL 主外键约束与标准SQL不同的地方
[标准SQL的外键约束条件] 1): 子表引用父表的主键 drop table if exists child,parent; create table if not exists parent( i ...
- day42——外键的限制和解决方法、外键的三种约束模式、修改表(单表查询)
day42 外键的限制和解决方法 可以添加外键关联的那个字段可以是 被唯一(unique)约束的字段 或者 主键 限制:+ 由于外键的使用,致使多个表之间产生了联系,当我们对这些表进行更新或删除操作的 ...
随机推荐
- linux -- chown修改文件拥有者和所在组
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...
- par函数usr参数-控制坐标系的范围
在R语言中,会根据数据的范围自动计算x轴和y轴的范围,举个例子 比如绘制一个1到5的散点图:代码示例: plot(1:5, 1:5) 生成的图片如下: 从图片中我们可以看到,x轴的起始位置比1要小,终 ...
- asp.net mvc中加入log4net记录错误日志
直接上代码示例:https://share.weiyun.com/aff36f2547514cfefe129ebb8ccb28ef 首先添加加log4net的dll,推荐用nuget.... 贴上配置 ...
- 简单html弹窗
css: <style type="text/css"> .moneyrecord { display:none; border:0.5em solid #00AAEE ...
- Extjs 下拉框
刚刚熟练了easyui控件的使用,又開始了如今的这个项目. 这个项目是个半成品.前端使用的是Extjs控件,jsp中没有代码.就引用了非常多的js...于是乎有种不知所措了呀. . . 说实话特别的不 ...
- 小技巧处理div内容溢出
前几天遇到一个问题,代码是这样一个层次: <div class="province"> <ul> <li>1</li& ...
- VC++ 6.0开发套件(自己收藏!)
安装镜像ISO VC++ 6.0_SP6_Win7企业版(中英文集成).iso MSDN安装镜像ISO MSDN_Oct_200 ...
- List<T>与ObservableCollectio<T> 的区别
在WPF中绑定通常会使用ObservableCollection,为什么不使用List呢? 简单是解释:List不包含值变通知功能,所以绑定了也许会出现绑定的数据与呈现数据不一致的问题. 通常绑定会使 ...
- Cocos2d-x 3.0final 终结者系列教程10-画图节点Node中的Action
Action是作用在Node上的逻辑处理,比方让Node移动.旋转.缩放.变色.跳跃.翻转.透明等等.都有相相应的Action Action怎样在Node上使用 1. 定义Action对象 如 aut ...
- python2.0_day21_bbs系统评论自动加载+文章创建
day20中我们已经实现了bbs系统的前端展示,后台admin管理,以及前端动态显示顶部\登录和评论的分级展示功能.其中评论的分级展示功能最为复杂.上一节中我们只是在文章明细页面中加了一个button ...