Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 null fk  [new]
new00
Guest
пытаюсь сделать так, чтобы fk был не обязательным. не дает. как делать?
19 июн 03, 14:07    [235047]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
чтобы fk был не обязательным. не дает. как делать?

Как делаешь, и как не дает? Лучше, если это будут скрипты с DLL.
19 июн 03, 14:26    [235086]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
new00
Guest
как делаю? пытаюсь из Ent.Manager. на диаграмме устанавливаю связь (при этом на столбце условие - NULL), а кода пытаюсь сохранить, то она не дает с ссылкой на fk.
19 июн 03, 14:30    [235092]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
C DDL, конечно. Мне отсюда плохо видно как ты там в ЕМ мышкой водишь. :-)

А если серьезно, то хотя бы сообщение об ошибке приведи, так как в теории, поле составляющее внешний ключ в табличе со стороны многие может быть и пустым. Что у тебя не получается, непонятно.
19 июн 03, 14:35    [235101]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
Glory
Member

Откуда:
Сообщений: 104760
Причина может быть в уже введенных данных в дочерней таблицы. Если там содержатся значения, отсутсвующие в родительской таблице
19 июн 03, 21:53    [235660]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
new00
Guest
текст ошибки
't1' table saved successfully

't2' table
- Unable to create relationship 'FK_t2_t1'.
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE statement conflicted with COLUMN FOREIGN KEY constraint 'FK_t2_t1'. The conflict occurred in database 'DB1', table 't1', column 'ID'.


я совсем запутался... при попытке изменять родительские таблицы натыкаюсь на кучу сложностей. но ведь это естсетвенная задача....
20 июн 03, 15:46    [236452]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
Ну все правильно.
Ты сначала засунул данные в таблицы, а потом устанавливаешь foreign key. Вот EM и ругается.
Удали, или измени ссылки в дочерних таблицах на null, а потом ставь ключ.
20 июн 03, 15:58    [236489]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
new00
Guest
не понял... что значит, измени ссылки?
20 июн 03, 16:03    [236500]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
alexia имеет ввиду, что в дочерней таблице у тебя есть значения, которых нет в родительской вот сиквел и не дает тебе ключ создать. Надо найти эти записи и исправить или удалить.
20 июн 03, 16:17    [236531]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
new00
Guest
еще одна проблема на ту же тему... не дает вставить запись, если не определно одно из полей, т.к. fk. хотя оно стоит NULL, т.е. нулевые значения возможны....
INSERT Statement conflicted with COLUMN FK constraint..."
помогите, пожалуйста! я уже запарился с этими fk!!!
23 июн 03, 14:29    [238707]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
еще одна проблема на ту же тему... не дает вставить запись, если не определно одно из полей, т.к. fk. хотя оно стоит NULL, т.е. нулевые значения возможны....
INSERT Statement conflicted with COLUMN FK constraint..."
помогите, пожалуйста! я уже запарился с этими fk!!!


Это не запарился, а не разобрался, называется. Ну и что, что NULL допустимы, ключа то соответствующего нет в родительской таблицы. Ох, сдается мне, чет ты там напартачил со структурой.
23 июн 03, 14:55    [238767]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
new00
Guest
снял enforce relationship for Insert and Update - отстал.
нет, данные все есть. но при попытке вставить запись, содержащую null- Значние поля он выдает (выдавал) такую ошибку.
23 июн 03, 17:11    [239064]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
Glory
Member

Откуда:
Сообщений: 104760
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t2_t1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)

ALTER TABLE [dbo].[t2] DROP CONSTRAINT FK_t2_t1
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[t1]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t2]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[t2]
GO

CREATE TABLE [dbo].[t1] (
[t1_id] [int] IDENTITY (1, 1) NOT NULL ,
[t1_name] [varchar] (50)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[t2] (
[t1_fk] [int] NULL ,
[t2_id] [int] IDENTITY (1, 1) NOT NULL ,
[t2_name] [varchar] (50)
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[t1] WITH NOCHECK ADD
CONSTRAINT [PK_t1] PRIMARY KEY CLUSTERED
(
[t1_id]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[t2] WITH NOCHECK ADD
CONSTRAINT [PK_t2] PRIMARY KEY CLUSTERED
(
[t2_id]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[t2] ADD
CONSTRAINT [FK_t2_t1] FOREIGN KEY
(
[t1_fk]
) REFERENCES [dbo].[t1] (
[t1_id]
)
GO


insert t1(t1_name) values('aaa')
insert t2(t1_fk, t2_name) values(1, 'xxx')
insert t2(t1_fk, t2_name) values(NULL, 'yyy')

select * from t1
select * from t2
23 июн 03, 17:34    [239122]     Ответить | Цитировать Сообщить модератору
 Re: null fk  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
2 Glory

Насколько я понял у автора топика немного другая ситуация. У него fk составной и он хочет, чтоб одно из полей, составлющих было NULL, а вот соответствующего ключа в родительской таблице не имеется, да и не должно быть, если это pk. Так что, если я ничего не путаю, у него с проетированием структуры что-то не так. IMHO.
24 июн 03, 07:51    [239490]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить