用于插入项的迁移脚本sql server

时间:2018-05-18 12:40:09

标签: sql sql-server

我正在尝试创建一个迁移脚本,但我需要一些帮助:,我有一个非常基本的脚本将一个项目插入一个表中,但我试图以一种方式检查该项目是否存在,然后插入其他跳过它

这是我的代码:

use mydatabase;

INSERT INTO dbo.mytable(col1,col2,col3) 
SELECT '3','test1','test3/abc.html';

4 个答案:

答案 0 :(得分:2)

您不需要重复表达式只需使用value构造:

INSERT INTO dbo.mytable(col1,col2,col3) 
SELECT t.col1, t.col2, t.col3
FROM (values (3, 'test1','test3/abc.html')) t (col1, col2, col3)
WHERE NOT EXISTS (
                  SELECT 1 
                  FROM dbo.mytable m
                  WHERE m.col1 = t.col1 
                  AND m.col2 = t.col2 
                  AND m.col3 = t.col3
                 );

答案 1 :(得分:1)

<ng-container *ngIf="!readonlyService.readonly; else readonlyView">
  <input placeholder="Enter a value" [(ngModel)]="value">
</ng-container>

<ng-template #readonlyView>
  Your readonly value is: {{value}}
</ng-template>

您可以根据您认为已插入的内容更改位置。

答案 2 :(得分:0)

这样的东西(但你需要某种钥匙来识别记录是否存在) -

IF NOT EXISTS(SELECT 1 FROM dbo.mytable WHERE col1 = '3' AND col2 = 'test1' AND col3 = 'test3/abc.html')
BEGIN
insert into dbo.mytable(col1,col2,col3) 
SELECT '3','test1','test3/abc.html'
END

答案 3 :(得分:0)

使用MERGE:

CREATE TABLE #mytable (col1 nvarchar(20), col2 nvarchar(20), col3 nvarchar(20))

INSERT INTO #mytable(col1,col2,col3) 
SELECT '3','test1','test3/abc.html';

Merge #mytable t
USING (SELECT '3','test1','test3/abc.html') s (col1, col2, col3)
ON t.col1 = s.col1 
AND t.col2 = s.col2 
AND t.col3 = s.col3
when not matched by target then
    INSERT  (col1,col2,col3)  VALUES (s.col1, s.col2, s.col3);