gpt4 book ai didi

mysql - 如何将mssql用户定义表类型转换为mysql UDT

转载 作者:行者123 更新时间:2023-11-29 15:31:41 32 4
gpt4 key购买 nike

This is my mssql UDT

create type ConditionUDT as Table 
(
Name varchar(150),
PackageId int
);

This is my mssql Stored Procedure

create Procedure [dbo].[Condition_insert]
@terms_conditions ConditionUDT readonly
as
begin
insert into dbo.condition (name, p_id)
select [Name],[PackageId]
from @terms_conditions;
end

最佳答案

如果您没有任何其他选择但一定要从 sql server 迁移到 mysql,有一个解决方案。

在 mysql 中占用许多行的最接近的结构预定义对象是实际的表。因此,sql server 的每个 UDDT 需要 1 个表。确保使用特定架构或命名转换,以便知道这些表是 UDDT 模拟。

这个想法是填写信息,将它们使用到sp中,然后删除它们。但是,您需要确保谁阅读了哪些内容,并且该信息在使用、使用后被删除。所以:

对于任何需要 2 列的表格,我建议始终将它们放在第一位。这将是键和变量名。键可以是 char(38) 并使用 UUID() 获取唯一标识符。它也可以是 int 并使用 connectionid() 代替。然而,唯一标识符更好,因为它可以确保无论如何没有人会使用没有为他缩进的信息。变量名称将是用于 sql server 参数的变量名称,只是一个字符串。这样:

从表名中您就知道您使用的是什么 UDDT。您可以通过 key 了解进程的身份。您从名称中就知道“变量”。

因此,在您的应用程序代码中:开始交易。使用键和变量名称将数据插入正确的(UDDT 模拟器)表中向存储过程提供键和变量名。您可以在同一个 sp 调用中对许多表类型参数使用相同的键。存储过程现在可以像以前一样使用 UDDT 变量中的信息,使用键和变量名称作为过滤器来查询正确的 UDDT 模拟表。删除您插入的数据犯罪捕获时,回滚。

为了简单起见,您的 sp 可以将数据读入临时表,并且您不需要为此方面更改原始 sql server sp 中的一行代码。

对应用代码的事务将帮助您确保无论出现什么问题,您的临时变量数据都将被删除或永远不会提交。

关于mysql - 如何将mssql用户定义表类型转换为mysql UDT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58680635/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com