0

子テーブルが更新されると、親テーブルの行のタイムスタンプが変更されるように、親テーブルにタイムスタンプ/行バージョンを設定しようとしています。

Child テーブルの行について知る必要はありません。親によると、この特定の行が変更されただけです。

USE [Test]
GO
CREATE TABLE [dbo].[Clerk](
  [ID] [int] NOT NULL,
  [Name] [varchar](20) NOT NULL,
  [lastUpdate] [timestamp] NOT NULL,
 CONSTRAINT [PK_Clerk] PRIMARY KEY CLUSTERED 
(
  [ID] ASC
)
CREATE TABLE [dbo].[ClerkAddress](
  [ClerkID] [int] NOT NULL,
  [Address] [varchar](40) NOT NULL,
 CONSTRAINT [PK_ClerkAddress] PRIMARY KEY CLUSTERED 
(
  [ClerkID] ASC
)
ALTER TABLE [dbo].[ClerkAddress]  WITH CHECK ADD  CONSTRAINT [FK_ClerkAddress_Clerk] FOREIGN KEY([ClerkID])
REFERENCES [dbo].[Clerk] ([ID])
ON UPDATE CASCADE


insert into Clerk (ID, Name) values (1, 'Test1')
insert into Clerk (id, Name) values (2, 'Test2')

insert into ClerkAddress (ClerkID, Address) values (1, 'address1')
insert into ClerkAddress (ClerkID, Address) values (2, 'address2')

次のコード例を使用します。

update ClerkAddress set Address = NEWID() where ClerkID = 2
--no change to Clerk when address changes 
select * from Clerk 
select * from ClerkAddress 

--Of course these update the lastUpdate in clerk
update Clerk set Name = 'test2' where ID = 2 
update Clerk set Name = name

これは可能ですか、それとも更新のトリガーを作成する必要がありますか? ( update clerk set name = name where id = ClerkID)

4

1 に答える 1