64 lines
2.6 KiB
Transact-SQL
64 lines
2.6 KiB
Transact-SQL
/* ============================================================================
|
||
删除策略冒烟测试夹具(可重复执行)
|
||
----------------------------------------------------------------------------
|
||
建一对专用临时业务表 + 模块配置 + 删除规则,用于验证删除引擎:
|
||
smoke_order 主单(b_id varchar 业务键)
|
||
smoke_order_item 明细(b_item_id 主键,b_order_id 外键指向主单)
|
||
|
||
覆盖场景:
|
||
1. cascade:删主单连带删明细
|
||
2. restrict:明细被引用时拒绝删主单
|
||
3. SQL 规则:命中即整批拒绝
|
||
4. direct:按表直删
|
||
|
||
清理见 smoke_delete_teardown.sql。
|
||
============================================================================ */
|
||
|
||
if object_id('dbo.smoke_order_item', 'U') is null
|
||
begin
|
||
create table dbo.smoke_order_item (
|
||
b_item_id varchar(50) not null primary key,
|
||
b_order_id varchar(50) not null,
|
||
b_name nvarchar(100) null
|
||
);
|
||
end
|
||
GO
|
||
|
||
if object_id('dbo.smoke_order', 'U') is null
|
||
begin
|
||
create table dbo.smoke_order (
|
||
b_id varchar(50) not null primary key,
|
||
b_no nvarchar(50) null,
|
||
b_status varchar(20) null
|
||
);
|
||
end
|
||
GO
|
||
|
||
/* 模块配置:主单 */
|
||
if not exists (select 1 from dbo.s_module where b_id = 'smoke_order')
|
||
begin
|
||
insert into dbo.s_module (b_id, b_parent_id, b_depth, b_path, b_name, b_module_type, b_view_table, b_save_table, b_key_field, b_canuse, b_xh)
|
||
values ('smoke_order', null, 0, 'smoke_order', N'冒烟测试主单', 'data', 'smoke_order', 'smoke_order', 'b_id', 1, 9001);
|
||
end
|
||
GO
|
||
|
||
/* 模块配置:明细 */
|
||
if not exists (select 1 from dbo.s_module where b_id = 'smoke_order_item')
|
||
begin
|
||
insert into dbo.s_module (b_id, b_parent_id, b_depth, b_path, b_name, b_module_type, b_view_table, b_save_table, b_key_field, b_canuse, b_xh)
|
||
values ('smoke_order_item', null, 0, 'smoke_order_item', N'冒烟测试明细', 'data', 'smoke_order_item', 'smoke_order_item', 'b_item_id', 1, 9002);
|
||
end
|
||
GO
|
||
|
||
/* 关系:明细 → 主单,many_to_one。
|
||
按设计 §3.2,many_to_one 的外键在源字段:源字段 b_order_id 是明细表里的外键列,
|
||
目标字段 b_id 是主单被引用的列。删除主单时,明细(引用方)被 cascade 连带删除。 */
|
||
delete from dbo.s_relation where b_source_module_id = 'smoke_order_item' and b_target_module_id = 'smoke_order';
|
||
GO
|
||
|
||
insert into dbo.s_relation
|
||
(b_source_module_id, b_source_field, b_target_module_id, b_target_field, b_relation_type, b_on_delete, b_canuse, b_xh)
|
||
values
|
||
('smoke_order_item', 'b_order_id', 'smoke_order', 'b_id', 'many_to_one', 'cascade', 1, 10);
|
||
GO
|