Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9115701
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 17, 20262026-06-17T04:29:38+00:00 2026-06-17T04:29:38+00:00

I am attempting to use foreign key support in SQLite to maintain referential integrity

  • 0

I am attempting to use foreign key support in SQLite to maintain referential integrity on a single-table database that has a reflexive join.

e.g.

PRAGMA foreign_keys = ON;

create table tree (
  objectId text unique not null,
  parentObjectID text,
  foreign key (parentObjectID) references tree(parentObjectID) on delete cascade
)

The behavior that I am hoping for is that when a parent row is deleted, its children and their children are deleted as well.

However, when I attempt to delete the root row (where the expected behavior would be that every other row in the database is also deleted), I get this error:

sqlite> delete from tree where objectid = '0';
Error: foreign key mismatch

Are my expectations out of whack with with SQLite foreign key support (and delete behaviors) can provide?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-17T04:29:39+00:00Added an answer on June 17, 2026 at 4:29 am

    Your problem is pretty simple, your FK on parentObjectId references parentObjectId rather than objectId and SQLite doesn’t detect this bit of confusion until you try to use the table. If your FK is defined like this:

    foreign key (parentObjectID) references tree(objectID) on delete cascade
    

    From the fine manual:

    So, in other words, misconfigured foreign key constraints that require looking at both the child and parent are DML errors. The English language error message for foreign key DML errors is usually “foreign key mismatch” but can also be “no such table” if the parent table does not exist. Foreign key DML errors are may be reported if:

    • The parent table does not exist, or
    • The parent key columns named in the foreign key constraint do not exist, or
    • The parent key columns named in the foreign key constraint are not the primary key of the parent table and are not subject to a unique
      constraint using collating sequence specified in the CREATE TABLE, or
    • The child table references the primary key of the parent without specifying the primary key columns and the number of primary key
      columns in the parent do not match the number of child key columns.

    The third point would seem to apply here since parentObjectId is neither a PK nor constrained to be unique so that’s why you don’t see an error until you try to modify the table’s content (i.e. use a DML statement rather than a DDL statement).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

In attempting to use std::select1st from <functional> in a VS2008 project I found that
I am attempting to use the following code to search a database using words
I'm attempting to use TPH mapping for the following classes. Ignore that there's only
Attempting to use asp.net mvc's Action Result of File. So it would seem that
I'm attempting to use groovyPageRenderer.render() to render a temple with a model, so that
I am attempting to use an Ant build script to build a project that
I'm attempting to use a form post to add rows to a mySQL table.
I'm attempting to use a form post to add rows to a mySQL table.
I'm attempting to use a 3rd party service that uses OAuth 1.0a and requires
Attempting to use JRuby 1.2.0 and Rails 2.3.2 with an embedded Derby database. I've

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.