Can a database table not have a primary key? SQLite lets you define a table with no primary key therefore there can be no insertion anomaly.


Can you create a database table without a primary key? Well, you just said you can in SQLite. And, I believe that holds true for almost every (if not every) major DBMS platform.

Should you create a database table without a primary key? No.

Every table should have some column (or set of columns) that uniquely identifies one and only one row. It makes it much easier to maintain the data.

It's true, without a primary key (or some unique key), you don't have an insertion anomaly if you go to insert the same data multiple times.

What you do have is a user table with 300 separate entries for a user named "bob", many of which have different values in the other columns. And, if you've tried to connect rows in some other table to user without a primary key/foreign key relationship - every row in message marked as sent_by "bob" ties back to every one of those 300 user entries. Oh, and there're 39 unique passwords for "bob" (157 of the rows all show the password "password", of course).

Without primary keys, things can get really messy, really fast.

  • I like to say that without a primary key you don't have data, you have junk. – Colin 't Hart Sep 24 '20 at 13:42
  • In MySQL, if you don't create one, a "hidden" one is created for you! – Vérace Mar 21 at 16:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.