Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kendala unik pada dua bidang, dan kebalikannya

Dua solusi, keduanya benar-benar tentang mengubah masalah menjadi lebih mudah. Saya biasanya lebih suka T1 solusi jika memaksakan perubahan pada konsumen dapat diterima:

create table dbo.T1 (
    Lft int not null,
    Rgt int not null,
    constraint CK_T1 CHECK (Lft < Rgt),
    constraint UQ_T1 UNIQUE (Lft,Rgt)
)
go
create table dbo.T2 (
    Lft int not null,
    Rgt int not null
)
go
create view dbo.T2_DRI
with schemabinding
as
    select
        CASE WHEN Lft<Rgt THEN Lft ELSE Rgt END as Lft,
        CASE WHEN Lft<Rgt THEN Rgt ELSE Lft END as Rgt
    from dbo.T2
go
create unique clustered index IX_T2_DRI on dbo.T2_DRI(Lft,Rgt)
go

Dalam kedua kasus, baik T1 atau T2 dapat berisi nilai duplikat di Lft,Rgt berpasangan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Anda menyalin catatan dalam tabel SQL tetapi menukar id unik dari baris baru?

  2. Anatomi kebuntuan SQL Server dan cara terbaik untuk menghindarinya

  3. Pertumbuhan Ukuran Database SQL Server menggunakan riwayat Cadangan

  4. Pilih nilai yang berbeda dari 1 kolom

  5. pyodbc - kecepatan penyisipan massal yang sangat lambat