TSQL с ошибкой? - PullRequest
       0

TSQL с ошибкой?

1 голос
/ 29 января 2011
create table Tramite
(
ID int primary key identity(1,1),
IDPersona int foreign key references Persona(ID),
Cantidad nvarchar(20),
Precio int,
NumeroDeControl int,
ReciboDeControl int,
NumeroVisa int,
NumeroVisaRecibido int,
PrecioVisa int,
NumeroVisaAutorizado int
)

В нем говорится, что ограничение не действует. Есть идеи почему?

Я уверен, что у меня есть стол под названием Персона. Я запускаю это утверждение из Microsoft Visual Studio 2010. Может быть, мне нужно указать что-то еще?

Почему бы не запустить?

http://i.stack.imgur.com/8Ex7Y.png

Ответы [ 4 ]

1 голос
/ 29 января 2011
create table Tramite 
( 
ID int primary key identity(1,1), 
IDPersona int constraint FK_Tramite_Persona foreign key references Persona(ID), 
Cantidad nvarchar(20), 
Precio int, 
NumeroDeControl int, 
ReciboDeControl int, 
NumeroVisa int, 
NumeroVisaRecibido int, 
PrecioVisa int, 
NumeroVisaAutorizado int 
) 
0 голосов
/ 31 января 2011

Как сказал Томас в своем комментарии к вашему вопросу, ваше утверждение работает, если таблица Persona существует и имеет первичный или потенциальный ключ, на который может ссылаться ограничение внешнего ключа.

В моей среде работают следующие операторы (SQL Server 2008 R2).

create table Persona (ID int not null primary key)
go
create table Tramite
(
  ID int primary key identity(1,1),
  IDPersona int foreign key references Persona(ID),
  Cantidad nvarchar(20),
  Precio int,
  NumeroDeControl int,
  ReciboDeControl int,
  NumeroVisa int,
  NumeroVisaRecibido int,
  PrecioVisa int,
  NumeroVisaAutorizado int
)
go

Возможно, вам следует попробовать создать фиктивную таблицу Persona в качестве теста. Если это удастся, и вы считаете, что эта таблица уже должна существовать, возможно, вы создали таблицу Persona в другой схеме. На снимке экрана я не вижу имен схем, назначенных таблицам.

0 голосов
/ 29 января 2011

Я не думаю, что вам нужны "ссылки на внешние ключи", только "ссылки", но я не уверен, что это является причиной вашей проблемы.В примерах для msdn используются только «ссылки», вы можете видеть, что Здесь .

0 голосов
/ 29 января 2011

Извлеките «ссылки на внешние ключи Persona (ID)» и просто запустите их после оператора CREATE TABLE.

ALTER TABLE [Tramite] WITH CHECK ADD  CONSTRAINT [Tramite_Persona_FK1] FOREIGN KEY([IDPersona]) REFERENCES [Persona] ([ID])

ALTER TABLE [Tramite] CHECK CONSTRAINT [Tramite_Persona_FK1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...