SORU
27 Ocak 2009, Salı


Nasıl sql server varsa, sadece bir yabancı anahtar kısıtlaması düşüreceğim?

Eğer varsa aşağıdaki kodu kullanarak eğer varsa bir tablo bırakabilirim ama bir kısıtlama ile aynı yapmak için ne yapmam gerektiğini bilmiyorum:

IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'TableName') AND type = (N'U')) DROP TABLE TableName
go

Ben de bu kodu kullanarak: kısıtlama ekleyin

ALTER TABLE [dbo].[TableName] 
  WITH CHECK ADD CONSTRAINT [FK_TableName_TableName2] FOREIGN KEY([FK_Name])
    REFERENCES [dbo].[TableName2] ([ID])
go

CEVAP
1 Kasım 2012, PERŞEMBE


Bu çok geçerli önerilen çözüm daha basittir:

IF (OBJECT_ID('FK_ConstraintName', 'F') IS NOT NULL)
BEGIN
    ALTER TABLE dbo.TableName DROP CONSTRAINT FK_ConstraintName
END

Eğer kısıtlama başka tür düşmesi gerekiyorsa, bu bunun ANLAMI içine geçmek için geçerli kodları() ikinci parametre konumunda fonksiyon:

C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
PK = PRIMARY KEY constraint
UQ = UNIQUE constraint

Ayrıca ikinci parametre olmadan ANLAMI kullanabilirsiniz.

12* *türlerinin tam Listesi:

Nesne türü:

AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar-function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
P = SQL Stored Procedure
PC = Assembly (CLR) stored-procedure
PG = Plan guide
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SO = Sequence object

İçin geçerlidir: SQL Server ile SQL Server 2012 2014.

SQ = Service queue
TA = Assembly (CLR) DML trigger
TF = SQL table-valued-function
TR = SQL DML trigger
TT = Table type
U = Table (user-defined)
UQ = UNIQUE constraint
V = View
X = Extended stored procedure

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • B4ROK

    B4ROK

    1 EKİM 2008
  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • Michael Neal

    Michael Neal

    2 Mayıs 2009