我正在尝试向 firebird 表添加一列。该列应该有一个默认值 1,但最初对于已经存在的行,该值应该设置为 0。这应该发生在一个事务中。
我试过
ALTER TABLE MYTABLE ADD MYCOLUMN SMALLINT DEFAULT 1 NOT NULL;
UPDATE MYTABLE SET MYCOLUMN = 0;
Run Code Online (Sandbox Code Playgroud)
但这在一笔交易中是不允许的,因为更新不会看到新列。我也试过:
ALTER TABLE MYTABLE ADD MYCOLUMN SMALLINT DEFAULT 0 NOT NULL;
ALTER TABLE MYTABLE ALTER COLUMN MYCOLUMN SET DEFAULT 1 NOT NULL;
Run Code Online (Sandbox Code Playgroud)
希望该列之后为 0 但它将为 1。
在一笔交易中获得我想要的东西的更多选择?
我正在尝试创建一个可以通过XMLSerializer序列化为XML的类.
目标XML应该看起来像这样
<subject_datas type="array">
<subject_data>
...
</subject_data>
<subject_data>
...
</subject_data>
</subject_datas>
Run Code Online (Sandbox Code Playgroud)
问题是subject_datas标记的type属性.我尝试的是将其设计为派生List并附加具有XMLAttribute属性的属性
[XmlRoot(ElementName = "subject_datas")]
public class SubjectDatas : List<SubjectData>
{
public SubjectDatas (IEnumerable<SubjectData> source)
{
this.AddRange(source);
Type = "array";
}
[XmlAttribute(AttributeName = "type")]
public string Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是因为类是Collection,所以XMLSerializer将序列化Collection中的对象而不是Collection本身.所以我的Type属性被忽略了:(