how to truncate table with foreign key constraint

69

how to truncate foreign key constraint table -

DELETE FROM [TableName]
DBCC CHECKIDENT ([TableName], RESEED, 0)

truncate table sql server foreign key -

CREATE TABLE #x -- feel free to use a permanent table
(
  drop_script NVARCHAR(MAX),
  create_script NVARCHAR(MAX)
);

DECLARE @drop   NVARCHAR(MAX) = N'',
        @create NVARCHAR(MAX) = N'';

-- drop is easy, just build a simple concatenated list from sys.foreign_keys:
SELECT @drop += N'
ALTER TABLE ' + QUOTENAME(cs.name) + '.' + QUOTENAME(ct.name) 
    + ' DROP CONSTRAINT ' + QUOTENAME(fk.name) + ';'
FROM sys.foreign_keys AS fk
INNER JOIN sys.tables AS ct
  ON fk.parent_object_id = ct.[object_id]
INNER JOIN sys.schemas AS cs 
  ON ct.[schema_id] = cs.[schema_id];

INSERT #x(drop_script) SELECT @drop;

-- create is a little more complex. We need to generate the list of 
-- columns on both sides of the constraint, even though in most cases
-- there is only one column.
SELECT @create += N'
ALTER TABLE ' 
   + QUOTENAME(cs.name) + '.' + QUOTENAME(ct.name) 
   + ' ADD CONSTRAINT ' + QUOTENAME(fk.name) 
   + ' FOREIGN KEY (' + STUFF((SELECT ',' + QUOTENAME(c.name)
   -- get all the columns in the constraint table
    FROM sys.columns AS c 
    INNER JOIN sys.foreign_key_columns AS fkc 
    ON fkc.parent_column_id = c.column_id
    AND fkc.parent_object_id = c.[object_id]
    WHERE fkc.constraint_object_id = fk.[object_id]
    ORDER BY fkc.constraint_column_id 
    FOR XML PATH(N''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N'')
  + ') REFERENCES ' + QUOTENAME(rs.name) + '.' + QUOTENAME(rt.name)
  + '(' + STUFF((SELECT ',' + QUOTENAME(c.name)
   -- get all the referenced columns
    FROM sys.columns AS c 
    INNER JOIN sys.foreign_key_columns AS fkc 
    ON fkc.referenced_column_id = c.column_id
    AND fkc.referenced_object_id = c.[object_id]
    WHERE fkc.constraint_object_id = fk.[object_id]
    ORDER BY fkc.constraint_column_id 
    FOR XML PATH(N''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N'') + ');'
FROM sys.foreign_keys AS fk
INNER JOIN sys.tables AS rt -- referenced table
  ON fk.referenced_object_id = rt.[object_id]
INNER JOIN sys.schemas AS rs 
  ON rt.[schema_id] = rs.[schema_id]
INNER JOIN sys.tables AS ct -- constraint table
  ON fk.parent_object_id = ct.[object_id]
INNER JOIN sys.schemas AS cs 
  ON ct.[schema_id] = cs.[schema_id]
WHERE rt.is_ms_shipped = 0 AND ct.is_ms_shipped = 0;

UPDATE #x SET create_script = @create;

PRINT @drop;
PRINT @create;

/*
EXEC sp_executesql @drop
-- clear out data etc. here
EXEC sp_executesql @create;
*/

Comments

Submit
0 Comments

More Questions

mysql format datemysql grant all privileges to a user finding duplicate column values in table with sql
mysql format dateorder by sql mysql show all tables
get all table name in sql through phpmysql show tables in database select count of distinct values sql
import database through command linesql server substring rename table sql
selecting name that contain certain word in sqlinstall sqlite3 python select duplicates in sql
ERROR 2002 (HY000): Cant connect to local MySQL server through socket -tmp-mysql.sock (2)alter table add foreign key mysql mysql delete row
how to auto increment in sqlhow to install mysql ubuntu sql where contains
how to create a table structure from another table in mysqlselect nextval from sequence sql truncate table
install sqlite npmpostgresql check total storage GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
how to select one row in mysqlselect row from mysql where date more than 30 days sql view where tables have same column name combine results
python mysql check if database existsdrop table if exists mysql month name extract
SQL SERVER Add Identity Column to existing tableupdate using case in mysql No module named MySQLdb
sql count duplicate rowshow to install postgresql on wsl group_concat limit mysql
sort by sqlquery to list all tables in sql database SELECT User,Host FROM mysql.user;
create a view in sqlitemysql get last insert id SQL UPDATE Statement
mysql show table column full descriptionpostgressql uuid t sql get foreign key