Sql 当两个表通过外键关联时,是否执行插入操作?
我在SQLServer2008中创建了两个表 如图所示 我在产品表中添加了一些数据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。希望这有帮助 快乐编码 尝试在级联上使用
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'))