Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以在SQL中使用同一列作为主键和外键吗?_Sql_Ms Access - Fatal编程技术网

我们可以在SQL中使用同一列作为主键和外键吗?

我们可以在SQL中使用同一列作为主键和外键吗?,sql,ms-access,Sql,Ms Access,一列可以同时用作主键和外键,请检查代码 Create table student ( s_id int primary key, s_name char(10), s_address varchar(12), constraint fk1 foreign key (s_id) references student (s_id) ); 嗯,我在oracle上试过,它说表已创建。因此,如果您使用的是oracle,并且MySQL应该可以很好地使用,那么就可以了。这

一列可以同时用作主键和外键,请检查代码

Create table student
(
    s_id int primary key,
    s_name char(10),
    s_address varchar(12), 

    constraint fk1 foreign key (s_id) references student (s_id)
);

嗯,我在oracle上试过,它说表已创建。因此,如果您使用的是oracle,并且MySQL应该可以很好地使用,那么就可以了。这主要用于自引用查询。

据我所知,MS access不允许在同一个表上创建自连接和关系。要实现这一点,您需要将学生表的两个副本拖到关系屏幕中,然后将s_id从一个拖到另一个的s_id上。您刚刚定义了一个自联接。我希望这在MS Access中能起作用。

您尝试过吗?发生了什么事?MS Access给出了一个错误“无法在字段和字段本身之间创建关系”重复:这里有一个@AdeelYounas,您应该指定您正在使用的数据库(例如MySQL/Postgres/Sqlite/oracle/MS SQL等),否则您将得到潜在的误导性答案。编辑:我看到marc_添加了ms access标记,谢谢。我不认为有表引用本身的主键有什么意义。您是否试图引用另一个表,例如带有约束的
student foo
,如
约束fk1外键(s_id)引用foo(id)
?我曾在Ms Access中尝试过此操作,但对我无效!我不能说MS access。可能是因为ms access不是一个完全关系数据库系统。不过我不确定。但它在Oracle和MySQL上运行良好