SQL Server Compact не поддерживает ключевые слова «Ссылки на внешние ключи» в «Создать таблицу» или я ошибаюсь? - PullRequest
2 голосов
/ 09 февраля 2011

Я получаю ошибки, используя Sql Compact. Я видел, что можно создать ограничения таблицы в компактной версии, как показано здесь . И согласно найденным документам здесь он обеспечивает «полную ссылочную целостность с каскадным удалением и обновлением». Так я действительно не могу сделать следующее или я ошибаюсь? Я продолжаю получать жалобы от sql server compact edition, что консистенция недействительна, хотя она отлично работает в экспресс-выпуске.

CREATE TABLE [A] (AKey int NOT NULL PRIMARY KEY);
CREATE TABLE [B] (AKey int NOT NULL ИНОСТРАННЫЕ КЛЮЧЕВЫЕ ССЫЛКИ A (AKey));

Ответы [ 2 ]

4 голосов
/ 13 сентября 2012

В Compact Edition не следует писать ключевое слово FOREIGN KEY, его следует опустить и начать определять ограничение внешнего ключа из ключевого слова REFERENCES: http://msdn.microsoft.com/en-us/library/ms173393(v=sql.100).aspx

Так что в вашем случае вы должны написать:

CREATE TABLE [A] (AKey int NOT NULL PRIMARY KEY);
CREATE TABLE [B] (AKey int NOT NULL REFERENCES A(AKey));

А ALTER не нужно!

2 голосов
/ 09 февраля 2011

Поскольку он работает в экспресс-издании, я буду считать, что я не ошибаюсь. Это дает желаемый эффект с добавлением каскадирования в компактном издании.

CREATE TABLE [A] (AKey int NOT NULL PRIMARY KEY);  
CREATE TABLE [B] (AKey int NOT NULL);  
ALTER TABLE [B] ADD CONSTRAINT references_a FOREIGN KEY (AKey) REFERENCES A(AKey)
    ON DELETE CASCADE ON UPDATE CASCADE;
...