当前位置: 首页 > 知识库问答 >
问题:

使用liquibase创建列时,如何基于现有列指定该列的值?

苗阳
2023-03-14

我有一个现有的mysql表,有两列a和b。

现在我想在该表中添加一列c。

c应该是可空的,应该有一个默认值NULL,除了在b列的值为10的行中。其中b的值为10,c的值为X。

我知道使用SQL做这件事相当简单,但我想使用liquibase做这件事,因为我们在模式迁移中使用liquibase。

共有3个答案

温星华
2023-03-14

如果要添加列,则

<changeSet author="your-name" id="your-id"> 
    <addColumn tableName="person" >
        <column name="is_active" type="varchar2(1)" defaultValue="Y" />  
    </addColumn>  
</changeSet>

添加-列

如果已经添加了列,则需要设置默认值

<changeSet author="your-name" id="your-id">
    <addDefaultValue columnDataType="varchar2(1)" columnName="is_active" defaultValue="Y" tableName="person"/>  
</changeSet>

加-默认-值

花俊雄
2023-03-14

我认为不使用普通sql的最佳解决方案如下:

>

  • 如沃尔特所写,使用add列更改;

    使用更新更改。

    您可以选择在一个变更集中使用这两个变更,但一个好的做法是使用一个单独的变更集来分隔每一个变更,以实现事务分解/回滚。

  • 阎劲
    2023-03-14

    你已经试过这样的东西了吗?

    <addColumn tableName="SGW_PRODOTTI_INFO_ATTRIBUTE">
        <column name="AlternativeListPrice" type="double" defaultValue="0.0">
        <constraints nullable="true"/>
        </column>
    </addColumn>
    
     类似资料:
    • 我有这个原始数据帧: > 可能有多行具有相同的日期时间,如示例所示。 列< code>column中可能不止有两个不同的值,这是一个简化的示例。 所有值都是整数。 我想创建这个新的数据框: 需要采取的行动: > 对于列<code>列<code>中的每个唯一值,创建一个新列,该值作为列的名称。 对于每个唯一的日期时间,创建一个新行。 根据原始列填充值,如果没有值,则使用 NaN。 创建原始数据帧的代

    • 谈到R编码,我目前有点墨守成规。我一直在尝试使用mutate、seq和rep函数来生成一个新列,该列迭代多个列值和不同的条件,但结果并不正确。下面是我的一些数据片段: 我希望按类型和特征 ID 对 lipidName 进行分组,然后查看类型特征 ID2,而不是不正确的数据表。如果它们具有相同的类型和特征 ID,则将它们计为脂质名称的相同脂质。如果它们具有相同的类型和特征ID2,则将它们计为脂质名称

    • 问题内容: 所以,这是我的数据框 我还有另一个清单: 如果x.Country位于欧洲,我想创建一个新列“ Continent” 问题答案: 或者您可以直接 使用

    • 我试图从一个范围创建一个列表,但当我将它粘贴到另一个列表中时,我得到的是一个类,而不是我期望的列表- 代码: 这输出<代码>范围(0,3),

    • 我想将我的自定义函数(它使用if-else梯形)应用到数据帧每行中的这六列(,,,,,)。 我已经尝试了不同的方法从其他问题,但似乎仍然不能找到正确的答案,我的问题。关键的一点是,如果这个人被算作西班牙裔,他们就不能算作其他任何东西。即使他们在另一个种族栏中有一个“1”,他们仍然被算作西班牙裔,而不是两个或两个以上的种族。类似地,如果所有ERI列的总和大于1,则被计为两个或两个以上的种族,不能被计

    • 我有一个这样的数据集 我想创建列(visit_no)。每当间隙大于1时,我们需要在接下来的行中将visit_no值增加1,直到我们找到另一个值,它将保持不变 这是数据框架