2014-08-27 4 views
-1
CREATE TABLE Usuario 
( 
    id int identity not null, 
    usuario char(20) unique not null, 
    senha char(10) not null, 
    tipo_usuario char(15) not null, 

    primary key (id), 
    foreign key (tipo_usuario) references TpoUsuario 
     on update cascade on delete set default 
); 

CREATE TABLE TpoUsuario 
( 
    id int identity not null, 
    tipo_usuario char(15) not null, 
    primary key(id) 
); 

Используйте это код сверху и получите это сообщение.Ошибка Создать Foreign Key SQL

Сначала я создал таблицу TpoUsuario, затем я создал таблицу Usuario.

Msg 1778, уровень 16, состояние 0, строка 1
Колонка 'TpoUsuario.id' не тот же тип данных, как ссылки на столбец 'Usuario.tipo_usuario' в внешнем ключе 'FK__Usuario__tipo_us__60A75C0F'.

Msg 1750, Level 16, State 0, Line 1
Не удалось создать ограничение. См. Предыдущие ошибки.

+1

Какая СУБД вы используете? Прочтите сообщение об ошибке. Типы данных не совпадают - вы пытаетесь создать внешний ключ на TpoUsuario.id (я думаю, вы не хотите использовать их в столбце) и Usuario.tipo_usuario. – MrTux

+0

Я использую Sql Server Management Studio –

+0

SSMS - это ваш клиентский инструмент, ваша СУБД будет чем-то вроде SQL Server 2008 R2, Oracle 11, MySQL и т. Д. – AHiggins

ответ

3

TpoUsuario.id является столбец типа данных INT, а Usuario.tipo_usuario это символ колонного типа Не могли бы вы связать Usuario.id с TpoUsuario.id или Usuario.usario с TpoUsuario.tipo_usuario

+0

Или, в зависимости от фактических данных в этом источнике, измените тип данных столбца CHAR() на INT ... – AHiggins

0

Посмотрите, как определить иностранные клавиши:

SQL FOREIGN KEY

Вы говорите

foreign key (tipo_usuario) references TpoUsuario on update cascade on delete set default 

Синтаксис: FOREIGN KEY (column col1, column col2, ...) REFERENCES table_name(column col1, column col2,...)