SQL ALTER表外键
我在使用ALTERTABLE命令添加外键时遇到问题。我不知道如何使它工作 我需要将ISIK_ID和STAADION_ID作为外键添加到ISIK_STAADIONIL表中 这是我的密码:SQL ALTER表外键,sql,database,foreign-keys,alter-table,Sql,Database,Foreign Keys,Alter Table,我在使用ALTERTABLE命令添加外键时遇到问题。我不知道如何使它工作 我需要将ISIK_ID和STAADION_ID作为外键添加到ISIK_STAADIONIL表中 这是我的密码: CREATE TABLE ISIK( ISIK_ID INT NOT NULL, EESNIMI VARCHAR(25) NOT NULL, PEREKONNANIMI VARCHAR(25) NOT NULL, ISIKUKOOD VARCHAR(20), KO
CREATE TABLE ISIK(
ISIK_ID INT NOT NULL,
EESNIMI VARCHAR(25) NOT NULL,
PEREKONNANIMI VARCHAR(25) NOT NULL,
ISIKUKOOD VARCHAR(20),
KODAKONDSUS VARCHAR(30),
SUGU CHAR(1) NOT NULL,
HARIDUSTASE CHAR(1) NOT NULL,
TELEFONI_NR VARCHAR(20),
SYNNIPAEV DATE,
CONSTRAINT ISIK_ID_PK PRIMARY KEY (ISIK_ID)
);
CREATE TABLE ISIK_STAADIONIL(
ISIK_STAADIONIL_ID INT NOT NULL,
CONSTRAINT ISIK__STAADIONIL_ID_PK PRIMARY KEY (ISIK_STAADIONIL_ID),
ALATES TIMESTAMP,
KUNI TIMESTAMP
);
CREATE TABLE STAADION(
STAADION_ID INT NOT NULL,
NIMETUS VARCHAR(20),
KIRJELDUS VARCHAR(100),
ASUKOHT VARCHAR(50),
SUURUS VARCHAR(20),
MAHUTAVUS INT,
EHITATUD VARCHAR(20),
EHITAJA VARCHAR(20),
CONSTRAINT STAADION_ID_PK PRIMARY KEY (STAADION_ID)
);
ALTER TABLE ISIK_STAADIONIL
ADD CONSTRAINT ISIK_ID_FK
FOREIGN KEY(ISIK_ID)
REFERENCES ISIK(ID);
在使用列创建FK约束之前,需要先将列添加到表中
CREATE TABLE ISIK_STAADIONIL(
ISIK_STAADIONIL_ID INT NOT NULL,
CONSTRAINT ISIK__STAADIONIL_ID_PK PRIMARY KEY (ISIK_STAADIONIL_ID),
ALATES TIMESTAMP,
KUNI TIMESTAMP,
ISIK_ID INT,
STAADION_ID INT
);
然后您的ALTER
语句应该可以正常工作
更新
稍微改变一下桌子的设计会更有意义,如下所示。逻辑是ISIK\u ID
和STAADION\u ID
一起足以确定ISIK\u STAADIONIL
表中的唯一性,因此单独的ID是多余的:
CREATE TABLE ISIK_STAADIONIL(
ISIK_ID INT NOT NULL,
STAADION_ID INT NOT NULL,
CONSTRAINT ISIK__STAADIONIL_ID_PK PRIMARY KEY (ISIK_ID, STAADION_ID),
ALATES TIMESTAMP,
KUNI TIMESTAMP
);
在使用列创建FK约束之前,需要先将列添加到表中
CREATE TABLE ISIK_STAADIONIL(
ISIK_STAADIONIL_ID INT NOT NULL,
CONSTRAINT ISIK__STAADIONIL_ID_PK PRIMARY KEY (ISIK_STAADIONIL_ID),
ALATES TIMESTAMP,
KUNI TIMESTAMP,
ISIK_ID INT,
STAADION_ID INT
);
然后您的ALTER
语句应该可以正常工作
更新
稍微改变一下桌子的设计会更有意义,如下所示。逻辑是ISIK\u ID
和STAADION\u ID
一起足以确定ISIK\u STAADIONIL
表中的唯一性,因此单独的ID是多余的:
CREATE TABLE ISIK_STAADIONIL(
ISIK_ID INT NOT NULL,
STAADION_ID INT NOT NULL,
CONSTRAINT ISIK__STAADIONIL_ID_PK PRIMARY KEY (ISIK_ID, STAADION_ID),
ALATES TIMESTAMP,
KUNI TIMESTAMP
);
你用的是什么产品?博士后?神谕“SQL”只是一种查询语言,而不是特定数据库产品的名称。当您尝试执行上面的
ALTER TABLE
语句时是否会生成消息?您使用的是哪种产品?博士后?神谕“SQL”只是一种查询语言,而不是特定数据库产品的名称。当您尝试执行上面的ALTER TABLE
语句时是否会产生一条消息?鉴于这似乎是ISIK
和STAADION
之间的连接表,我认为应该删除ISIK_STAADIONIL_ID
,主键应该是(ISIK\u ID,STAADION\u ID)
@BobJarvis是的,我同意。鉴于这似乎是ISIK
和STAADION
之间的一个连接表,在我看来,ISIK\u STAADIONIL\u ID
应该删除,主键应该是(ISIK\u ID,STAADION\u ID)
@BobJarvis是的,我同意。