1
我有2个表:如何在sql server中使用连接插入到2表中?
T_Customer
T_Address
在T_Customer
表有T_Address
外键。
网页创建表单,客户可以添加有细节,如名字,姓于,地址等
当用户提交表单,然后地址经过细节应在T_Address
表的INSERT和T_Address
ID去T_Customer
表是它点击一个按钮就可以创建2个插入操作?
连接是可能的吗?
我有2个表:如何在sql server中使用连接插入到2表中?
T_Customer
T_Address
在T_Customer
表有T_Address
外键。
网页创建表单,客户可以添加有细节,如名字,姓于,地址等
当用户提交表单,然后地址经过细节应在T_Address
表的INSERT和T_Address
ID去T_Customer
表是它点击一个按钮就可以创建2个插入操作?
连接是可能的吗?
单个INSERT语句只能影响一个表,尽管您可能有一些触发器会反过来影响其他表。但是,您的问题特别是关于单击一次按钮时的操作。这是非常可能的,而且确实非常可取。只需创建一个单独的存储过程并将其作为参数传递给客户和地址表所需的所有字段。
然后在您的存储过程中,您可以有两个插入,一个插入客户,一个插入地址。如果您有参照完整性约束,则必须在地址前插入客户。
这种方法的优点是存储过程中的所有命令都被同一个事务覆盖:它全部成功或全部失败,并且只需要一次往返数据库,反过来又更快并且使用更少的资源。
是的,阅读关于TRIGGER – sagi
你不能在一个连接做这个,因为传递变量不可能与插入。您需要插入地址,然后插入客户。您也可以使用@@ IDENTITY变量在一个存储过程中执行此操作。 –
你有2个选项。 1)写入2个包含在事务中的ado查询,并在失败时回滚。您可以轻松读取插入的值。 [执行插入命令并返回插入的Id在Sql](https://stackoverflow.com/questions/18373461),[获取插入行的身份的最佳方式?](https://stackoverflow.com/questions/42648) 。 2)使用一个存储过程,它接受你所有的参数并在那里执行你的插入。无论哪种方式,您需要读回插入的客户记录的身份值(*请参阅上面的链接*)。 – Igor