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) 
); 

위 코드를 사용하여이 메시지 오류가 발생했습니다.오류 외래 키 만들기 SQL

먼저 TpoUsuario 테이블을 만든 다음 테이블 Usuario을 만들었습니다. 메시지 1778

, 수준 16, 상태 0, 줄 1
열 'TpoUsuario.id는'외래 키 'FK__Usuario__tipo_us__60A75C0F'에서 열 'Usuario.tipo_usuario'를 참조와 동일한 데이터 타입이다.

메시지 레벨 1750, 수준 16, 상태 0, 줄 1
제약 조건을 만들 수 없습니다. 이전 오류를 참조하십시오. Usuario.tipo_usuario가 문자 유형 열 동안

+1

어떤 DBMS를 사용하고 있습니까? 오류 메시지를 읽으십시오. 데이터 유형이 일치하지 않습니다. TpoUsuario.id에서 외래 키를 만들려고합니다 (열을 사용하지 않으려한다고 생각합니다). Usuario.tipo_usuario. – MrTux

+0

난 Sql Server Management Studio를 사용했습니다 –

+0

SSMS는 클라이언트 도구입니다. DBMS는 SQL Server 2008 R2, Oracle 11, MySQL 등이 될 것입니다. – AHiggins

답변

3

TpoUsuario.id 당신이 정의하는 방법을 참조하십시오 TpoUsuario.tipo_usuario

+0

또는 해당 소스의 실제 데이터에 따라 CHAR() 열의 데이터 유형을 INT로 변경하십시오. – AHiggins

0

와 TpoUsuario.id 또는 Usuario.usario와 Usuario.id를 연결 할 수있는 int 데이터 형식의 열입니다 외국 키 :

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,...)