0

SchYrSem テーブルからの関連レコードを持たないレコードのリストを表示する次のビュー (schyrsem のない学生) があります。

SELECT Students.IDNo, Students.LastName, Students.FirstName
FROM Students LEFT JOIN SchYrSem ON Students.[IDNo] = SchYrSem.[IDNo]
WHERE (((SchYrSem.IDNo) Is Null));

レコードを削除すると、次のように表示されます。

ビューまたは関数 'schyrsem のない学生' は、変更が複数のベース テーブルに影響するため、更新できません。

SchYrSem テーブルに一致するレコードがない学生テーブルからレコードを削除するにはどうすればよいですか?

4

1 に答える 1

2
DELETE s
  FROM dbo.Students AS s 
  LEFT OUTER JOIN dbo.SchYrSem AS ss
  ON ss.IDNo = s.IDNo
  WHERE ss.IDNo IS NULL;

または

DELETE s    
  FROM dbo.Students AS s   
  WHERE NOT EXISTS   
  (
     SELECT 1
      FROM dbo.SchYrSem
      WHERE IDNo = s.IDNo   
  );

ビューから行を削除しようとするべきではありません。

于 2012-04-23T02:41:21.897 に答える