SQL Server 2005中导入或覆盖数据

SQL Server 2005中导入或覆盖数据,第1张

概述SQL Server 2005中导入覆盖数据

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

/*INSTEAD OF 触发器的主要优点是可以使不能更新的视图支持更新。包含多个基表的视图必须使用 INSTEAD OF 触发器来支持引用表中数据的插入、更新和删除 *** 作。INSTEAD OF 触发器的另一个优点是使您得以编写这样的逻辑代码:可以拒绝批处理中的某些部分同时允许批处理的其它部分成功。INSTEAD OF 触发器可以进行以下 *** 作: 忽略批处理中的某些部分。不处理批处理中的某些部分并记录有问题的行。如果遇到错误情况则采取备用 *** 作。 说明  在含有用 DELETE 或 UPDATE  *** 作定义的外键的表上,不能定义 INSTEAD OF DELETE 和 INSTEAD OF UPDATE 触发器。将此逻辑作为 INSTEAD OF 触发器的一部分进行编码,可避免所有访问数据的应用程序必须重新执行该逻辑。在下列 Transact-sql 语句序列中,INSTEAD OF 触发器更新视图中的两个基表。另外,显示两种处理错误的方法: 忽略对 Person 表的重复插入,并且插入的信息将记录在 PersonDuplicates 表中。将对 Employeetable 表的重复插入转变为 UPDATE 语句,该语句将当前信息检索至 Employeetable,而不会产生重复键侵犯。 Transact-sql 语句创建两个基表、一个视图、一个记录错误表和视图上的 INSTEAD OF 触发器。下面的这些表将个人数据和业务数据分开并且是视图的基表:*/CREATE table Person   (    SSN         char(11) PRIMARY KEY,name        nvarchar(100),Address     nvarchar(100),Birthdate   datetime   )CREATE table Employeetable   (    EmployeeID       int PRIMARY KEY,SSN              char(11) UNIQUE,Department       nvarchar(10),Salary           money,CONSTRAINT FKEmpPer FOREIGN KEY (SSN)    REFERENCES Person (SSN)   )--下面的视图使用某个人的两个表中的所有相关数据建立报表:CREATE VIEW Employee ASSELECT P.SSN as SSN,name,Address,Birthdate,EmployeeID,Department,SalaryFROM Person P,Employeetable EWHERE P.SSN = E.SSN--可记录对插入具有重复的社会安全号的行的尝试。PersonDuplicates 表记录插入的值、尝试插入 *** 作的用户的用户名和插入的时间:CREATE table PersonDuplicates   (    SSN           char(11),name          nvarchar(100),Address       nvarchar(100),Birthdate     datetime,InsertSname   nchar(100),WhenInserted  datetime   )--INSTEAD OF 触发器在单独视图的多个基表中插入行。将对插入具有重复社会安全号的行的尝试记录在 PersonDuplicates 表中。将 Employeetable 中的重复行更改为更新语句。CREATE TRIGGER IO_Trig_INS_Employee ON EmployeeINSTEAD OF INSERTASBEGINSET NOCOUNT ON-- Check for duplicate Person. If no duplicate,do an insert.IF (NOT EXISTS (SELECT P.SSN      FROM Person P,inserted I      WHERE P.SSN = I.SSN))   INSERT INTO Person      SELECT SSN,Comment      FROM insertedELSE-- Log attempt to insert duplicate Person row in PersonDuplicates table.   INSERT INTO PersonDuplicates      SELECT SSN,SUSER_Sname(),GETDATE()      FROM inserted-- Check for duplicate Employee. If no duplicate,do an insert.IF (NOT EXISTS (SELECT E.SSN      FROM Employeetable E,inserted      WHERE E.SSN = inserted.SSN))   INSERT INTO Employeetable      SELECT EmployeeID,SSN,Salary,Comment      FROM insertedELSE--If duplicate,change to UPDATE so that there will not--be a duplicate key violation error.   UPDATE Employeetable      SET EmployeeID = I.EmployeeID,Department = I.Department,Salary = I.Salary,Comment = I.Comment   FROM Employeetable E,inserted I   WHERE E.SSN = I.SSNEND

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的SQL Server 2005中导入或覆盖数据全部内容,希望文章能够帮你解决SQL Server 2005中导入或覆盖数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/1164622.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存