我知道我会因此而受到抨击,但......
我有表ProductA,ProductB和ProductC,它们具有非常相似的模式,但每个表中有2或3列.每个表都有一个插入触发器,它会将A,B或C中每个插入的重复行触发到表产品,这是所有产品的合并.此外,A,B或C上的更新触发器同样会更新表产品中的等效行,删除触发器也是如此.所有工作都完美无缺,直到.....我们更新表产品A列,表A,B和C中也存在.
我正在寻找在Table Products上开发一个触发器,它将在表A,B和C,BUT中的每一个中将A列中的更新传播到A列,而不调用表A,B和C上的更新触发器.所需的行为是更新在两个方向上工作而不会产生无限循环.(注意,表产品中只有2列需要复制到表A,B和C)
选项包括:
从概念上讲,这怎么可能呢?
6/7更新:
这是表A中的触发器代码(例如):
ALTER TRIGGER [dbo].[GRSM_WETLANDS_Point_GIS_tbl_locations_update]
ON [dbo].[GRSM_WETLANDS_POINT]
after update
AS
BEGIN
SET NOCOUNT ON;
update dbo.TBL_LOCATIONS
set
X_Coord = i.X_Coord,
Y_Coord = i.Y_Coord,
PlaceName = i.PlaceName,
FCSubtype = case
when i.FCSubtype = 1 then 'Point: Too Small to Determin Boundary'
when i.FCSubtype = 2 then 'Point: Boundary Determined by Contractor but not Surveyed'
when i.FCSubtype = 3 then 'Point: Wetland Reported but not yet Surveyed'
end ,
Landform = i.Landform …Run Code Online (Sandbox Code Playgroud) 我需要验证 UUID 列表并确定版本。例如,使用 h ttps://www.beautifyconverter.com/uuid-validator.php并输入 25CCCA6F-1568-473E-BFED-EC08C31532C6 我可以确定它是有效的,并且是版本 4。我从https:/ /www.snip2code.com/Snippet/12614/Validating-a-uuid4-with-Python-以及如何确定字符串是否是有效的 v4 UUID?UUID 模块可以一次验证一个,或测试特定版本,但不确定 UUID 是否会测试所有 4 个版本并返回版本。
当此触发器触发时,包含在以下代码块中
alter TRIGGER [dbo].[locations_update_geometry_After]
ON dbo.TBL_LOCATIONS
for update
AS
INSERT dbo.TBL_LOCATIONS(SHAPE, X_Coord, Y_Coord,objectid)
SELECT a.Shape, a.X_Coord, a.Y_Coord, a.objectid
FROM
(
SELECT
SHAPE = CASE WHEN SHAPE IS NOT NULL
THEN SHAPE ELSE Geometry::STPointFromText('POINT('
+ CAST(X_Coord AS VARCHAR(20)) + ' '
+ CAST(Y_Coord AS VARCHAR(20)) + ')', 26917) END,
X_Coord = CASE WHEN SHAPE IS NULL THEN X_Coord ELSE SHAPE.STX END,
Y_Coord = CASE WHEN SHAPE IS NULL THEN Y_Coord ELSE SHAPE.STY END,
objectid
FROM inserted
) AS a
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
无法保存编辑。底层 …