Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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_Foreign Keys - Fatal编程技术网

插入记录时SQL外键创建问题

插入记录时SQL外键创建问题,sql,foreign-keys,Sql,Foreign Keys,我有以下两个表格: 表A AId INT NOT NULL BId INT NOT NULL 表B BId INT NOT NULL AId INT NOT NULL 表A的AId是主键,BId是外键。同样的情况也适用于表B 我想做的是,我需要在任何表中插入记录,但这两个表都会受到影响 是否可能,如果可能的话,请建议如何 非常感谢您提前告诉我交叉引用的内容,但它不会起作用 若问题是在第一个表发生insert时自动将数据插入第二个表,那个么使用触发器 CREATE TRIGGER [TRIG_

我有以下两个表格:

表A

AId INT NOT NULL
BId INT NOT NULL
表B

BId INT NOT NULL
AId INT NOT NULL
A的
AId
是主键,
BId
是外键。同样的情况也适用于
表B

我想做的是,我需要在任何表中插入记录,但这两个表都会受到影响

是否可能,如果可能的话,请建议如何


非常感谢您提前告诉我交叉引用的内容,但它不会起作用

若问题是在第一个表发生insert时自动将数据插入第二个表,那个么使用触发器

CREATE TRIGGER [TRIG_MyTable]
ON [MyTable]
AFTER INSERT

在外键上使用延迟约束。

您有一个循环引用,而您所拥有的将不起作用。你想干什么?(意思是,你想解决的真正问题是什么?这听起来很像XY问题。)实际上我没有任何真正的问题。我只是想完成这个。这就是为什么我会问:)你用的是哪种产品?博士后?神谕“SQL”只是一种查询语言,而不是特定数据库产品的名称。@Ic。虽然我同意循环引用不是一个好的设计选择,但“行不通”是错误的。当使用延迟约束时,您可以很好地将行插入到这些表中(同样:这通常不是一个好主意)。如果您希望自动插入,除了交叉引用之外,这是一种方法-您的意思是,它不起作用?如果您想在将数据插入另一个表时自动更新一个表,那么它应该可以工作。如果要将两个表链接在一起,那么此操作的目的是什么?你不应该让PK-FK和FK-PK关系在一个表中双向运行——这是一个或另一个。我不想自动插入,我的问题是我们可以用这个PK-FK和FK-PK插入数据吗,如果是,那么如何插入?根据这里的意思,“我需要在任何表中插入记录,但这两个表都会受到影响”它说,当您向一个表插入一条记录时,您希望在第二个表中反映这一点,这就是说自动插入我认为这仅适用于oracle,在SQL中可能吗?@nrsharma:“在SQL中可能吗”没有意义。Oracle确实使用SQL作为其查询语言。事实上,每个关系数据库都使用SQL作为其查询语言(此外:Postgres、Derby和SQLite也支持延迟约束)@nrsharma:据我所知,延迟约束支持数据库MSSQL、Oracle、PostgreSQL以及其他可能的数据库。你用什么?@AlexanderDrankin:我用的是SQL SERVER 2005