INSERT在虚拟表SQL上的冲突

时间:2015-05-09 15:45:59

标签: sql sql-server-2008 insert

由于FK引用,我在INSERT上遇到了问题。过程如下:

  1. 我创建了表格CuentasCuentas_Con_RowNumber
  2. 我从一张有超过300万条记录的大桌子中选择。因为有些是重复的,我只需要存储1个“cuenta”,所以我制作了tempDB。我必须这样做,因为在巨大的数据库中有许多记录具有相同的Cuenta_Nro具有不同的事务,我只需要一个。
  3. 我从tempDB所有列中选择RowNumber,然后将其插入Cuentas表。
  4. 问题是tempDB Pais(国家/地区)列不是引用Paises(国家/地区)表格的FK,而是原始表格({{1}因此,它会崩溃。
  5. 代码:

    Cuentas

    错误消息是:

      

    InstrucciónINSERTen conflicto conlalimitciónFOREIGNKEY“FK__Cuentas__Cuenta___24B338F0”。 El Conflicto ha aparecido en la base de datos“GD1C2015”,tabla“dbo.Paises”,“Pais_Id”栏。

1 个答案:

答案 0 :(得分:0)

问题是因为Maestro.Cuenta_Pais_Codigo列是从gd_esquema.Maestra表中提取的,而Cuenta_PaisOrigen表又在目标表中作为Cuentas并且定义了外键。

Pais_Id表中没有匹配的dbo.Paises记录的插入INSERT INTO #Cuentas_Con_RowNumer SELECT * FROM (SELECT ... FROM gd_esquema.Maestra Maestro inner join dbo.Clientes on Clientes.Cliente_Apellido = Maestro.Cli_Apellido AND Clientes.Cliente_Nombre = Maestro.Cli_Nombre inner join Paises P on Maestro.Cuenta_Pais_Codigo = P.Pais_Id ) AS a WHERE a.RowNumber = '1' 表中会选择一些记录。

您可以按如下方式添加内部联接,并将结果检查为:

class Post(db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    body = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    body_html = db.Column(db.Text)
    comments = db.relationship('Comment', backref='post', lazy='dynamic')
    category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
    category = db.relationship('Category',
                               backref=db.backref('posts', lazy='dynamic'))


    @staticmethod
    def on_changed_body(target, value, oldvalue, initiator):
        allowed_tags = ['a', 'abbr', 'acronym', 'b', 'blackquote', 'code', 'em', 'i', 'li', 'ol', 'pre', 'strong',
                        'ul', 'h1', 'h2', 'h3', 'p']
        target.body_html = bleach.linkify(bleach.clean(
            markdown(value, output_form='html'),
            tags=allowed_tags, strip=True))

db.event.listen(Post.body, 'set', Post.on_changed_body)


class Category(db.Model):
    __tablename__ = 'categories'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

    def __repr__(self):
        return '<Category {}>'.format(self.name)