sql >> データベース >  >> RDS >> Sqlserver

従属テーブルからのデータの削除

    あるので 外部キー関係、次のスクリプトは、カスケード削除を模倣し始めることができます.

    DECLARE @TableName VARCHAR(32)
    DECLARE @PrimaryKey VARCHAR(32)
    
    SET @TableName = 'MasterTable'
    SET @PrimaryKey = '1'
    
    SELECT  'DELETE FROM '
            + fks.name + '.' + fkt.name
            + ' WHERE '
            + pc.name 
            + ' = '
            + @PrimaryKey
            , fko.name as [FK Name]
            , fk.constraint_column_id as [Col Order]
            , fks.name + '.' + fkt.name as [FK table]
            , pc.name as [FK column]
            , rcs.name + '.' + rct.name as [PK table]
            , rc.name as [PK column]
    FROM    sys.foreign_key_columns fk
            -- FK columns
            INNER JOIN sys.columns pc ON fk.parent_object_id = pc.object_id
                                         AND fk.parent_column_id = pc.column_id
            INNER JOIN sys.objects fkt ON pc.object_id = fkt.object_id
            INNER JOIN sys.schemas as fks ON fks.schema_id = fkt.schema_id
            -- referenced PK columns
            INNER JOIN sys.columns rc ON fk.referenced_object_id = rc.object_id
                                         AND fk.referenced_column_id = rc.column_id
            INNER JOIN sys.objects rct ON rc.object_id = rct.object_id
            INNER JOIN sys.schemas as rcs ON rcs.schema_id = rct.schema_id
            -- foreign key constraint name
            INNER JOIN sys.objects fko ON fk.constraint_object_id = fko.object_id
    WHERE   rct.Name = @TableName
      

    1. PostgreSQLインデックスとInnoDBインデックス-違いを理解する

    2. INSERTを実行すると、十分な値を受け取れないのはなぜですか?

    3. SQLServerのテーブルから個別のレコードを取得する方法-SQLServer/TSQLチュートリアル112

    4. php&mysqlの最大数の目的