【问题标题】:SQL/SpatiaLite: How to insert a default value into certain columns when inserting data from another table?SQL/SpatiaLite:从另一个表插入数据时,如何在某些列中插入默认值?
【发布时间】:2015-07-06 13:24:49
【问题描述】:

我有一个新表,其中包含这些列(全部不是 NULL):

creation_date, created_by, attribute_1, attribute_2, geometry

我还有一张旧桌子:

attribute_1, attribute_2, geometry

我想通过 INSERT INTO / SELECT / FROM 从旧表中插入数据。然而,这显然给了我一个关于 creation_date 和 created_by 列的错误,因为旧表没有。如何在插入旧表中的行时为这些 colmun 插入默认值?

【问题讨论】:

    标签: sql default sql-insert spatialite


    【解决方案1】:

    您应该简单地选择一些文字。除非该数据存在于其他地方并且您可以通过连接查找它,否则我会建议:

    INSERT INTO newtable
    SELECT date('now') as creation_date, 
    'Legacy Data' as created_by, attribute_1, attribute_2, geometry
    FROM oldtable
    

    【讨论】:

      【解决方案2】:

      在创建新表时,将两个新属性设置为默认属性

      创建表 NEWTABLE (COLUMN1 int default(X) NOT NULL, COLUMN2 int default(Y) NOTNULL, COLUMN3 int, COLUMN4 int) 这里 X 和 Y 是在发生任何 INSERT 时将提供给列的值,之后可以更新它们。对于 COLUMN3 和 4,可以从任何其他表中插入数据

      【讨论】:

        猜你喜欢
        • 2020-05-22
        • 1970-01-01
        • 2017-09-13
        • 2012-02-05
        • 1970-01-01
        • 2011-11-27
        • 1970-01-01
        • 2011-08-19
        • 2020-12-24
        相关资源
        最近更新 更多