Disabling Constraints in SQL server?

Click For Summary

Discussion Overview

The discussion centers around the topic of managing uniqueness constraints in SQL Server, particularly in the context of practicing queries that involve duplicate records. Participants explore methods for creating tables that allow repeated records, the implications of removing uniqueness constraints, and the potential use of identity columns for testing purposes.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant inquires whether using "ALTER TABLE" to drop a unique constraint is the correct approach to allow duplicate records.
  • Another participant suggests that it is possible to create a table without uniqueness constraints, noting that such tables may perform slower and lead to table scans.
  • A participant mentions the need for an identity column to facilitate the insertion of duplicate records, indicating that permission for "ALTER TABLE" is necessary for this modification.
  • There is a discussion about using sequences in modern databases to manage primary keys in child tables, with a caution against creating child tables without keys unless they are very small and static.
  • Some participants emphasize that their discussions are focused on testing scenarios and not on production environments.

Areas of Agreement / Disagreement

Participants express differing views on the best methods for handling uniqueness constraints and the implications of allowing duplicate records. There is no consensus on a single approach, and multiple perspectives are presented regarding the use of identity columns and the performance of tables without uniqueness.

Contextual Notes

Limitations include the assumption that participants are discussing non-production environments for testing purposes. There are also unresolved details regarding the specific methods for removing duplicates and the implications of altering table structures.

WWGD
Science Advisor
Homework Helper
Messages
7,806
Reaction score
13,120
Hi, I want to practice queries that require having repeated records. This is not allowed by default since it violates uniqueness constraint. Do I just use an alter table drop unique constraint for this?
 
Technology news on Phys.org
Can’t you build a table without the uniqueness? I’ve done that from time to time. These kinds of tables are slower if large and you need to find stuff. You want to avoid table scans that’s why indexes were created.
 
jedishrfu said:
Can’t you build a table without the uniqueness? I’ve done that from time to time. These kinds of tables are slower if large and you need to find stuff. You want to avoid table scans that’s why indexes were created.
Thanks, I am trying to use them to test certain queries, like queries done to delete duplicates. So for this, I need to have duplicates which I can then delete.
 
WWGD said:
Hi, I want to practice queries that require having repeated records. This is not allowed by default since it violates uniqueness constraint. Do I just use an alter table drop unique constraint for this?

If the table you want to have duplicate records in has a unique identification column (some sort of an "ID" thing) then (obviously) there is no problem inserting duplicate records or even more than two times the same record. So, I think that you mean that you don't have something like this and hence the uniqueness constraint issue you talk about. In this case - as far as I know, you need to have permission for an "ALTER TABLE" in order to add an identity column. Then you can utilize one of various methods to get rid of the duplicate records i.e. correlated subquery, using temporary table etc. (for these various methods you may want to take a look here). Needless to say that all the above are for testing purposes on a table that you can really alter without affecting the database schema i.e. not on any sort of database in production phase.
 
  • Like
Likes   Reactions: WWGD and jedishrfu
Modern databases support sequences, a record field (part of the primary key) that is/can be automatically numbered on insertion by a predefined increment - usually one. This is specifically meant for repeating child tables. I think it is what @QuantumQuest is describing, but I am not sure - so I wrote this quick post.

Do not consider making a child table without keys unless it is VERY tiny and static. Then full table scans are sufficient and as fast as indexed column lookups.
Note: this defeats the purpose of most child tables.
 
  • Like
Likes   Reactions: QuantumQuest
QuantumQuest said:
If the table you want to have duplicate records in has a unique identification column (some sort of an "ID" thing) then (obviously) there is no problem inserting duplicate records or even more than two times the same record. So, I think that you mean that you don't have something like this and hence the uniqueness constraint issue you talk about. In this case - as far as I know, you need to have permission for an "ALTER TABLE" in order to add an identity column. Then you can utilize one of various methods to get rid of the duplicate records i.e. correlated subquery, using temporary table etc. (for these various methods you may want to take a look here). Needless to say that all the above are for testing purposes on a table that you can really alter without affecting the database schema i.e. not on any sort of database in production phase.
Yes, this is just small-scale academic effort; I would not experiment in a production environment. Thanks.
 
  • Like
Likes   Reactions: QuantumQuest

Similar threads

  • · Replies 51 ·
2
Replies
51
Views
6K
  • · Replies 6 ·
Replies
6
Views
4K
Replies
5
Views
3K
Replies
7
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 18 ·
Replies
18
Views
4K
  • · Replies 16 ·
Replies
16
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K