gpt4 book ai didi

scala - 使用 Slick (Scala),有没有办法向表 'on the fly' 添加一列?

转载 作者:行者123 更新时间:2023-12-01 10:00:56 25 4
gpt4 key购买 nike

我想编写我的 Scala+Slick 应用程序,以便用户可以在表中配置额外的列,而无需修改源代码。有办法吗?

Adam S - 是的,这就是我的想法。该程序将附带一个默认配置文件,最终用户/管理员可以选择向某些表中添加新列,并且当程序启动时它会添加这些列。

我还考虑了其​​他一些方法,例如使用用户将配置的备用列配置初始表(但会受到备用数量限制和预定义类型的限制)。另一种方法是定义第二个表,它与原始表具有相同的主键,并且只包含用户定义的数据,然后程序将不得不处理维护两个表(每个表都有相同数量的行),这将允许更常规地处理原始默认表。这两个表可能与数据库功能保持同步(这将使其特定于数据库)。

最佳答案

是的,这是可能的。当您将列定义为 Table 定义的一部分时,它是通过调用 Table 对象的“column”方法来完成的。您可以从外部执行相同的操作,例如:

for {
a <- TableA
b <- TableB if a.id === b.column[String]("dynamic1")
} yield b.column[Int]("dynamic2")

类型参数确定用于该列的正确隐式 ColumnType。您还可以动态获取 ColumnType 并显式提供该参数。

请注意,不要求表的 * 投影包含所有列。如果要为动态发现的列生成 DDL,可以将这些列包含在 create_* 返回的 Seq 中。

关于scala - 使用 Slick (Scala),有没有办法向表 'on the fly' 添加一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369124/

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