相关疑难解决方法(0)

非主键的外键

我有一个保存数据的表,其中一行需要存在于另一个表中.所以,我想要一个外键来保持参照完整性.

CREATE TABLE table1
(
   ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
   AnotherID INT NOT NULL,
   SomeData VARCHAR(100) NOT NULL
)

CREATE TABLE table2
(
   ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
   AnotherID INT NOT NULL,
   MoreData VARCHAR(30) NOT NULL,

   CONSTRAINT fk_table2_table1 FOREIGN KEY (AnotherID) REFERENCES table1 (AnotherID)
)
Run Code Online (Sandbox Code Playgroud)

但是,正如你所看到的,表我是外键,列不是PK.有没有办法创建这个外键,或者更好的方法来维护这种引用完整性?

sql sql-server

120
推荐指数
4
解决办法
12万
查看次数

外键是否在SQL Server中自动编入索引?

以下SQL语句是否会自动在Table1.Table1Column上创建索引,还是必须显式创建索引?

数据库引擎是SQL Server 2000

       CREATE TABLE [Table1] (
. . .
            CONSTRAINT [FK_Table1_Table2] FOREIGN KEY 
            (
                [Table1Column]
            ) REFERENCES [Table2] (
                [Table2ID]
            )

        )
Run Code Online (Sandbox Code Playgroud)

sql-server indexing foreign-keys

66
推荐指数
3
解决办法
3万
查看次数

Mysql CHECK约束

可能重复:
MySQL中的CHECK约束无效

我是学生,现在我必须弄清楚检查的意义.我们有一些代码:

CHECK (CHAR_LENGTH(PLZ) = 4) 
Run Code Online (Sandbox Code Playgroud)

现在我必须弄清楚它到底在做什么.问题是我在互联网上找不到任何东西(或者我使用谷歌做了一些完全错误的事情).我创建了这个代码来测试它:

CREATE TABLE Test(
    ID CHAR(4),
    CHECK (CHAR_LENGTH(ID) = 4)
);

INSERT INTO Test(ID) VALUES ('12345');
Run Code Online (Sandbox Code Playgroud)

问题是我无法找到与CHECK约束删除行的任何区别.现在我问你?我使用与否的区别是什么.

mysql sql

15
推荐指数
0
解决办法
3万
查看次数

是什么导致外键错配错误?

我有一个sqlite数据库结构如下:

CREATE TABLE IF NOT EXISTS Patient 
( PatientId INTEGER PRIMARY KEY AUTOINCREMENT );

CREATE TABLE IF NOT EXISTS Event 
( 
PatientId INTEGER REFERENCES Patient( PatientId ),
DateTime TEXT,
EventTypeCode TEXT,
PRIMARY KEY( PatientId, DateTime, EventTypeCode )
);

CREATE TABLE IF NOT EXISTS Reading 
( 
PatientId INTEGER REFERENCES Patient( PatientId ),
DateTime TEXT REFERENCES Event (DateTime),
EventTypeCode TEXT REFERENCES Event (EventTypeCode),
Value REAL,
PRIMARY KEY( PatientId, DateTime, EventTypeCode )
);
Run Code Online (Sandbox Code Playgroud)

我插入患有Id#1的患者

然后我跑:

INSERT INTO Event (PatientId, DateTime, EventTypeCode) VALUES (1, …
Run Code Online (Sandbox Code Playgroud)

sql sqlite constraints foreign-keys

12
推荐指数
1
解决办法
2万
查看次数

非唯一索引上的外键?(甲骨文)

我试图在表A上创建约束,以检查表B中是否存在一组记录。我可以使用外键,但是问题是表B中的数据不唯一。

有没有一种方法可以创建这样的约束而不创建触发器?

编辑:我不能更改表B的结构。

sql oracle database-design constraints data-modeling

5
推荐指数
2
解决办法
4494
查看次数