--建立数据库
CREATE DATABASE BBS;USE BBS;--创建用户表
CREATE TABLE users(
id INT IDENTITY NOT NULL,
username NVARCHAR(20) NOT NULL,
userpass NVARCHAR(30) NOT NULL,
email NVARCHAR(50) NOT NULL,
sec_q NVARCHAR(50),
sec_a NVARCHAR(50),
realname NVARCHAR(20),
birthday DATETIME,
sexy NVARCHAR(6),
qq NVARCHAR(50),
tel NVARCHAR(20),
address NVARCHAR(100),
description NVARCHAR(100),
level INT DEFAULT 10,
topicnum INT,
articlenum INT,
regdate DATETIME DEFAULT getdate(),
lastlogdate DATETIME DEFAULT getdate(),
PRIMARY KEY(id)
);
    
--创建版块表
CREATE TABLE plates(
id int IDENTITY NOT NULL,
nodeid INT NOT NULL,
platename NVARCHAR(20) NOT NULL,
parentid INT NOT NULL,
context NVARCHAR(100),
hidden NVARCHAR(10),
ownerid INT,
purview INT DEFAULT 0,
pri INT DEFAULT 50,
PRIMARY KEY(id),
FOREIGN   KEY (ownerid)  REFERENCES   users(id)   ON DELETE CASCADE ON UPDATE CASCADE
);--创建文章表
CREATE TABLE articles
(
id INT IDENTITY NOT NULL,
title NVARCHAR(30) NOT NULL,
content NTEXT NOT NULL,
plateid INT NOT NULL,
authorid INT NOT NULL,
emittime DATETIME DEFAULT getdate(),
purview INT DEFAULT 0,
pri INT DEFAULT 50,
PRIMARY KEY(id),
FOREIGN   KEY (plateid)  REFERENCES   plates(id)   ON   UPDATE CASCADE,
FOREIGN   KEY (authorid)  REFERENCES   users(id)   ON   UPDATE CASCADE
);
我在articles表上建立了两个外键关联,出现了这样的错误:
“在資料表'articles' 導入FOREIGN KEY 條件約束'FK__articles__author__5EBF139D' 可能造成循環或多個串聯路徑。請指定ON DELETE NO ACTION 或ON UPDATE NO ACTION,或者修改其他FOREIGN KEY 條件約束。”请问这是什么原因?我用的sqlserver2005

解决方案 »

  1.   

    CREATE   TABLE   articles 

    id INT IDENTITY NOT   NULL primary key , 
    title NVARCHAR(30) NOT   NULL, 
    content NTEXT NOT   NULL, 
    plateid INT NOT   NULL FOREIGN       KEY   (plateid)     REFERENCES       plates(id)       ON       UPDATE CASCADE, 
    authorid INT NOT   NULL FOREIGN       KEY   (authorid)     REFERENCES       users(id)       ON       UPDATE CASCADE, 
    emittime DATETIME DEFAULT getdate(), 
    purview INT DEFAULT 0, 
    pri INT DEFAULT 50
    );--或
    CREATE   TABLE   articles 

    id INT IDENTITY NOT   NULL primary key , 
    title NVARCHAR(30) NOT   NULL, 
    content NTEXT NOT   NULL, 
    plateid INT NOT   NULL , 
    authorid INT NOT   NULL , 
    emittime DATETIME DEFAULT getdate(), 
    purview INT DEFAULT 0, 
    pri INT DEFAULT 50,
    constraint FK_articles_1 FOREIGN       KEY   (plateid)     REFERENCES       plates(id)       ON       UPDATE CASCADE,
    constraint FK_articles_2 FOREIGN       KEY   (authorid)     REFERENCES       users(id)       ON       UPDATE CASCADE
    )