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
Sql 当两个表通过外键关联时,是否执行插入操作?_Sql_Sql Server 2008 R2 - Fatal编程技术网

Sql 当两个表通过外键关联时,是否执行插入操作?

Sql 当两个表通过外键关联时,是否执行插入操作?,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,我在SQLServer2008中创建了两个表 如图所示 我在产品表中添加了一些数据 insert into tblproduct values ("I PHONE"); insert into tblproduct values ("SAMSUNG"); insert into tblproduct values ("SONY"); ...etc 现在我的问题是如何编写sql语句,以便在tblOrder中插入数据 这样Pid将自动填入tblOrder。希望这有帮助 快乐编码 尝试在级联上使用

我在SQLServer2008中创建了两个表

如图所示

我在产品表中添加了一些数据

insert into tblproduct values ("I PHONE");
insert into tblproduct values ("SAMSUNG");
insert into tblproduct values ("SONY");
...etc
现在我的问题是如何编写sql语句,以便在tblOrder中插入数据 这样Pid将自动填入tblOrder。

希望这有帮助

快乐编码

尝试在级联上使用INSERT

INSERT INTO tblOrder(OName, Pid)
SELECT 'nameOfOrder',Pid
FROM tblProduct
WHERE PName='IPhone'.
您需要从products表中提取PID,而不是直接在Orders表中插入PID。 这将确保所有顺序表中的pid都存在于产品表中


此外,您不能记住每个产品的Pid,但可以通过名称(Iphone、三星等)识别产品,这更方便。

好吧,为了回答您的问题,sql数据由sql语言操作。但sql server只是保存结构化数据的一种方式

因此,当您构建应用程序并列出可供订购的产品时,您知道Those产品的ID。然后你可以做一些类似的事情:

INSERT INTO tblOrder(OName, Pid)
VALUES ('name_choosen', [product_id_selected])
在您的情况下,对于sql培训,您需要:

INSERT INTO tblOrder(OName, Pid)
SELECT 'name_of_order', Pid
FROM tblProduct
WHERE PName='IPhone'


关于删除级联的
文章如何帮助插入记录?只链接的答案不受欢迎,您应该将文章的要点添加到您的答案中。您是否希望更新tblOrder中的现有记录?或者只是将记录插入到表中?不,我正在寻找插入操作我们缺少一些东西,您只使用SQL吗?它是一个应用程序吗?是的,我使用sql server 2008 r2只是为了学习sql语句这是什么[product\u id\u selected]。请您解释一下好的,当您运行执行sql插入的代码时,您将看到类似(在PHP中)$productID=2;然后$sql=“插入到tblOrder(OName,Pid)值中('order_name',$productID)”;然后mysqli_query($con,$sql)这将执行sql查询我只是想说,在现实生活中,你永远不会在sql中做你想做的特定事情,你将在应用程序中完成。这只是一个特殊的案例。但我知道您正在接受SQL方面的培训;)您的意思是$productID将被动态检索根本不,在应用程序中使用
SELECT*from tblProduct
从tblProduct检索所有信息之前,您知道哪个id与此产品名称匹配。然后选择您的产品(如web表单页面中的下拉列表),并将
插入到tblOrder中的
ID
INSERT INTO tblOrder(OName, Pid)
SELECT 'name_of_order'
      , (SELECT Pid from tblProduct WHERE PName='IPhone')
INSERT INTO tblOrder(OName, Pid)
VALUES ('name_of_order'
      , (SELECT Pid from tblProduct WHERE PName='IPhone'))