java - 删除时外键的问题

标签 java sqlite

我有两个定义如下的表;从用户表中,hospitalId 和 poliklinikId 都引用表 relhospol,如果从 relhospol 中删除任何行(如果任何用户与之相关),我想将 hospitalId 和 poliklinikId 设置为 null,DDL 这么说。当我从 SQLite 管理器中删除一行时,它会使用户的 hospitalId 和 PoliklinikId 为空,但是当我尝试从应用程序级别 (Java) 中删除一行时,它只会从 relhospol 中删除,它不会设置 null (hospitalId, PoliklinikId) 什么是缺失点?
JDBC驱动:SQLite-jdbc-3.7.2

CREATE TABLE [USER] (
  [ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
  [GROUPID] INTEGER CONSTRAINT [FK_USER_GID] REFERENCES [GROUP]([ID]) ON DELETE SET NULL ON UPDATE CASCADE, 
  [HOSPITALID] INTEGER, 
  [POLIKLINIKID] INTEGER, 
  [NAME] VARCHAR(50) NOT NULL, 
  [LOGINID] VARCHAR(15) NOT NULL, 
  [EMAIL] VARCHAR(50) NOT NULL, 
  [PASSWORD] VARCHAR(32) NOT NULL, 
  CONSTRAINT [FK_USER_RELHOSPOL] FOREIGN KEY([HOSPITALID], [POLIKLINIKID]) REFERENCES [RELHOSPOL]([HOSPITALID], [POLIKLINIKID]) ON DELETE SET NULL ON UPDATE CASCADE);

CREATE UNIQUE INDEX [AS] ON [USER] ([LOGINID]);
CREATE UNIQUE INDEX [AS1] ON [USER] ([EMAIL]));

CREATE TABLE [RELHOSPOL] (
  [HOSPITALID] INTEGER CONSTRAINT [FK_RELHOSPOL_HOS] REFERENCES [HOSPITAL]([ID]) ON DELETE SET NULL ON UPDATE CASCADE, 
  [POLIKLINIKID] INTEGER CONSTRAINT [FK_RELHOSPOL_POL] REFERENCES [POLIKLINIK]([ID]) ON DELETE SET NULL ON UPDATE CASCADE, 
  CONSTRAINT [sqlite_autoindex_RELHOSPOL_1] PRIMARY KEY ([HOSPITALID], [POLIKLINIKID]));

最佳答案

您不能将主键设置为 NULL:

CREATE TABLE [RELHOSPOL] (
[HOSPITALID] INTEGER CONSTRAINT [FK_RELHOSPOL_HOS] REFERENCES [HOSPITAL]([ID]) ON DELETE SET NULL ON UPDATE CASCADE, 
[POLIKLINIKID] INTEGER CONSTRAINT [FK_RELHOSPOL_POL] REFERENCES [POLIKLINIK]([ID]) ON DELETE SET NULL ON UPDATE CASCADE, 
CONSTRAINT [sqlite_autoindex_RELHOSPOL_1] PRIMARY KEY ([HOSPITALID], [POLIKLINIKID]));

您正试图从哪个表中删除一行?你能发布 DELETE SQL 吗?

关于java - 删除时外键的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298521/

相关文章:

java - 写入 CSV 文件导致 JVM 崩溃

python - 如何从表中删除记录?

mysql - MySQL/MariaDB 的匿名只读访问

android - 在 JUnit4 和 Mockito 中编写 SQLiteOpenHelper 测试用例

java - JaxB 解码错误 : java. lang.RuntimeException : unexpected element (uri :"", 本地 :"code")。预期的元素是 <{}section>

java - 为什么java进程挂起执行mysqldump?

sqlite - 不同表的列之间的SQLite算术

java - 如何修复android java中的sqliteException

java - 如何配置生成的代码在 IntelliJ 中的位置?

java - 如果 javap 输出不适合 jasmin,有什么替代方案?