加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 通过JDBC删除Derby中的所有约束

发布时间:2020-12-14 19:12:16 所属栏目:Java 来源:网络整理
导读:如何通过JDBC删除Derby数据库中的所有约束? 最佳答案 您可以查询系统表SYS.SYSCONSTRAINTS,SYS.SYSTABLES和SYS.SYSSCHEMAS以获取给定模式的所有约束名称和相关表. 首先,关于这些表的几句话(从Re: System tables in Derby开始): SYSTABLES has one row for

如何通过JDBC删除Derby数据库中的所有约束?

最佳答案
您可以查询系统表SYS.SYSCONSTRAINTS,SYS.SYSTABLES和SYS.SYSSCHEMAS以获取给定模式的所有约束名称和相关表.

首先,关于这些表的几句话(从Re: System tables in Derby开始):

SYSTABLES has one row for each table in the database. Its primary key is TABLEID,which contains system-generated values. The SCHEMAID is a foreign key column,which references SYSSCHEMAS.

SYSSCHEMAS has one row for each schema in the database. Its primary key is SCHEMAID.

SYSCONSTRAINTS has one row for each constraint in the database (primary,unique,foreign and check constraints). Its primary key is CONSTRAINTID,which is a system-generated value. The TABLEID column is a foreign key referring to SYSTABLES.TABLEID. The SCHEMAID column is a foreign key referring to SYSSCHEMAS.SCHEMAID.

所以你可以使用以下查询:

SELECT 
    C.CONSTRAINTNAME,T.TABLENAME 
FROM 
    SYS.SYSCONSTRAINTS C,SYS.SYSSCHEMAS S,SYS.SYSTABLES T 
WHERE 
    C.SCHEMAID = S.SCHEMAID 
AND 
    C.TABLEID = T.TABLEID
AND 
    S.SCHEMANAME = 'MYSCHEMA';

然后循环并构建相应的ALTER TABLE DROP CONSTRAINT语句.

参考

> Derby support for SQL-92 features

>表22.对SQL-92功能的支持:约束表

> Re: System tables in Derby

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读