Официальный сайт студ.городка НГТУ
Программирование и БД » [MySQL] Добавление в таблицу внешних ключей 

#1  27.01.08 14:32

Igo
Профиль

[MySQL] Добавление в таблицу внешних ключей

Собственно имеем две таблицы

Код::

CREATE TABLE `page` (
  `Id` int(11) NOT NULL default '0',
  `Name` varchar(50) NOT NULL default '',
  `ParentName` varchar(50) default NULL,
  `ParentLevel` int(11) NOT NULL default '0',
  `Target` varchar(50) default NULL,
  `AutoPath` int(11) NOT NULL default '1',
  `Path` varchar(50) default NULL,
  `OrderBy` int(11) default NULL,
  `Caption` varchar(250) NOT NULL default '',
  `Header` varchar(250) NOT NULL default '',
  `Title` varchar(250) NOT NULL default '',
  `Type` int(11) default '4',
  `IsMenuItem` int(11) NOT NULL default '0',
  `ParentKeywords` int(11) NOT NULL default '1',
  `Keywords` text,
  `ParentDescription` int(11) NOT NULL default '1',
  `Description` text,
  `Content` text,
  `ParentClass` int(11) NOT NULL default '1',
  `Class` int(11) NOT NULL default '1',
  `AdminOptions` varchar(10) default NULL,
  `DateCreate` datetime default NULL,
  `DateUpdate` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `UID` int(11) NOT NULL default '5',
  `GID` int(11) NOT NULL default '6',
  `Permission` int(11) NOT NULL default '436',
  `Param0` varchar(255) default NULL,
  `Param1` varchar(255) default NULL,
  `Param2` varchar(255) default NULL,
  `Param3` varchar(255) default NULL,
  `Param4` varchar(255) default NULL,
  `Param5` varchar(255) default NULL,
  `Param6` varchar(255) default NULL,
  `Param7` varchar(255) default NULL,
  `Param8` varchar(255) default NULL,
  `Param9` int(11) default NULL,
  PRIMARY KEY  (`Id`),
  UNIQUE KEY `XAKPage` (`Name`),
  UNIQUE KEY `XAK3Page` (`ParentLevel`,`ParentName`,`OrderBy`),
  UNIQUE KEY `XAK2Page` (`ParentName`,`OrderBy`),
  UNIQUE KEY `XAK1Page` (`ParentName`,`Path`),
  KEY `IXPage_Class` (`Class`),
  KEY `IXPage_Caption` (`Caption`),
  KEY `IXPage_UID` (`UID`),
  KEY `IXPage_GID` (`GID`),
  KEY `IXPage_Permission` (`Permission`),
  KEY `IXPage_Target` (`Target`),
  KEY `IXPage_Type` (`Type`),
  KEY `IXPage_Param0` (`Param0`),
  KEY `IXPage_Param1` (`Param1`),
  KEY `IXPage_Param2` (`Param2`),
  KEY `IXPage_Param3` (`Param3`),
  KEY `IXPage_Param4` (`Param4`),
  KEY `IXPage_Param9` (`Param9`),
  KEY `IXPage_TargetClass` (`Target`,`Class`),
  KEY `IXPage_ClassDateCreate` (`Class`,`DateCreate`),
  KEY `IXPage_Param9Class` (`Class`,`Param9`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251



CREATE TABLE `sswork` (
  `Page` int(11) NOT NULL default '0',
  `Preview` varchar(250) default NULL,
  `Preview1` varchar(250) default NULL,
  `Preview2` varchar(250) default NULL,
  `File` varchar(250) default NULL,
  `URL` varchar(250)
default NULL,
  `Agency` int(11) default NULL,
  `User` int(11) default NULL,
  `Branch` int(11) default NULL,
  `Brand` int(11) default NULL,
  `Year` int(11) default NULL,
  `Region` int(11) default NULL,
  `Contest` int(11) default NULL,
  `Award` int(11) default NULL,
  PRIMARY KEY  (`Page`),
  KEY `IXWork_Agency` (`Agency`),
  KEY `IXWork_Branch` (`Branch`),
  KEY `IXWork_Brand` (`Brand`),
  KEY `IXWork_Contest` (`Contest`),
  KEY `IXWork_User` (`User`),
  KEY `IXWork_Region` (`Region`),
  KEY `IXWork_Award` (`Award`),
  KEY `IXWork_Year` (`Year`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251

Теперь надо связать эти две таблицы по полям Id n Page таким образом, чтобы при удалении записи в главной (в таблице Page) удалялся и хвост в SSWork.

Пишу такой вот запрос на изменение - все вроде по синтаксису:

Код::

alter table sswork
add constraint
foreign key Page
references page Id
on delete cascade

сервер выдает ошибку: "SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'references page Id on delete cascade' at line 4"

Версия сервера MySQL 5.0.27

кто нибудь может подскажет что я не правильно делаю?

Offline

#2  27.01.08 15:02

Re: [MySQL] Добавление в таблицу внешних ключей

Igo, попробуй юзать mysql tools

Offline

#3  27.01.08 18:20

Igo
Профиль

Re: [MySQL] Добавление в таблицу внешних ключей

все...всем спасибо - проблема была в моей невнимательности

вот рабочий и верный вариант, вдруг кому нибудь пригодится

Код::

ALTER TABLE sswork
ADD CONSTRAINT FOREIGN KEY (`Page`) REFERENCES page (`Id`) ON DELETE CASCADE

Исправлено Igo (27.01.08 18:21)

Offline

#4  27.01.08 18:34

Re: [MySQL] Добавление в таблицу внешних ключей

:) Бывает. Вобще всем и вся советую при работе с СУБД обособлять имена таблиц и полей :)

Offline

Программирование и БД » [MySQL] Добавление в таблицу внешних ключей 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.040 сек.
Выполнено 14 запросов.