Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 on delete cascade на внешних ключах почему-то не помогает очистить таблицу с PK  [new]
MonoQuad
Member

Откуда: Kiev
Сообщений: 11
Добрый день!
Прошу помочь в непонятной ситуации. MS SQL12 не хочет удалять таблицу с первичным ключём, хотя я проставил везде каскады.
Где я ошибся?
Отправляю полный запрос:
CREATE DATABASE Employees
GO

USE Employees

CREATE TABLE [Employee'sNames]
(
EmpID smallint IDENTITY NOT NULL,
FirstName varchar(50) NULL,
LastName varchar(50) NULL,
PhoneNumber varchar(50) NULL  CHECK (PhoneNumber LIKE '([0-9][0-9][0-9])[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
[E-mail] varchar(50) NULL CHECK ([E-mail] LIKE '%_@_%.__%')
)

ALTER TABLE dbo.[Employee'sNames]
ADD CONSTRAINT PK_Employees
PRIMARY KEY (EmpID)

ALTER TABLE [Employee'sNames]
ADD CONSTRAINT UK_PhNumb UNIQUE (PhoneNumber)

CREATE TABLE [Employee'sPositions&Salary]
(
EmpID smallint NOT NULL 
	FOREIGN KEY REFERENCES [Employee'sNames](EmpID) ON DELETE CASCADE,
Position varchar NULL,
Hierarchy tinyint NULL,
Salary smallmoney NULL
)

CREATE TABLE [Employee'sPrivateInfo]
(
EmpID smallint NOT NULL
	FOREIGN KEY REFERENCES [Employee'sNames](EmpID) ON DELETE CASCADE,
Birthdate datetime NULL,
MaritalStatus bit NOT NULL DEFAULT 0,
LocationCity varchar NULL
)

DROP TABLE [Employee'sNames]

!!!
"Нвозможно усечь таблицу "Employee'sNames", так как на нее ссылается ограничение FOREIGN KEY"

Сообщение было отредактировано: 7 апр 15, 23:07
7 апр 15, 22:18    [17485660]     Ответить | Цитировать Сообщить модератору
 Re: on delete cascade на внешних ключах почему-то не помогает очистить таблицу с PK  [new]
Очень лысый
Member

Откуда: БОМЖ
Сообщений: 591
Каскадное удаление это не про DROP TABLE, а про DELETE FROM
7 апр 15, 23:06    [17485849]     Ответить | Цитировать Сообщить модератору
 Re: on delete cascade на внешних ключах почему-то не помогает очистить таблицу с PK  [new]
o-o
Guest
Очень лысый,

бог с вами, какой дроп, он TRUNCATE делает.

TRUNCATE TABLE (Transact-SQL)
Restrictions
You cannot use TRUNCATE TABLE on tables that:
*Are referenced by a FOREIGN KEY constraint. (You can truncate a table that has a foreign key that references itself.)
*Participate in an indexed view.
*Are published by using transactional replication or merge replication.

For tables with one or more of these characteristics, use the DELETE statement instead.
7 апр 15, 23:15    [17485877]     Ответить | Цитировать Сообщить модератору
 Re: on delete cascade на внешних ключах почему-то не помогает очистить таблицу с PK  [new]
Очень лысый
Member

Откуда: БОМЖ
Сообщений: 591
ой, вот так всегда
7 апр 15, 23:23    [17485906]     Ответить | Цитировать Сообщить модератору
 Re: on delete cascade на внешних ключах почему-то не помогает очистить таблицу с PK  [new]
o-o
Guest
Очень лысый,

да вообще пойди разбери, что он делает.
код в сообщении делает одно, ошибка от другого.
я одно скажу: если бы там был DROP TABLE, то на русском бы сервер выдал
Невозможно удалить объект "Employee'sNames", так как на него ссылается ограничение FOREIGN KEY.

я за то, чтобы верить серверному сообщению, его труднее всего подделать.
а код потом можно любой запостить
7 апр 15, 23:39    [17485947]     Ответить | Цитировать Сообщить модератору
 Re: on delete cascade на внешних ключах почему-то не помогает очистить таблицу с PK  [new]
MonoQuad
Member

Откуда: Kiev
Сообщений: 11
o-o, признателен за Ваш крайне содержательный ответ
8 апр 15, 00:16    [17486025]     Ответить | Цитировать Сообщить модератору
 Re: on delete cascade на внешних ключах почему-то не помогает очистить таблицу с PK  [new]
MonoQuad
Member

Откуда: Kiev
Сообщений: 11
Очень лысый, спасибо - как вариант
8 апр 15, 00:17    [17486027]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить