我有一個角色和權限表,名爲role_permissions。TSQL循環不存在
對於每個角色,如果該角色尚未擁有該權限,我想插入一個新權限。我的循環的問題是,只有一行(角色)更新。循環似乎沒有正確地重新評估每個循環中的子查詢(它找到沒有權限的第一個角色)
DECLARE @role_id INT
SET @role_id = (SELECT TOP 1 role_id FROM p_role_permissions WHERE NOT EXISTS (SELECT NULL FROM p_role_permissions WHERE permission_id = 57))
WHILE @role_id IS NOT NULL
BEGIN
INSERT INTO p_role_permissions (role_id, permission_id) VALUES(@role_id, 57)
-- does not appear to evaluate correctly (works only on the first loop)
SET @role_id = (SELECT TOP 1 role_id FROM p_role_permissions WHERE NOT EXISTS (SELECT NULL FROM p_role_permissions WHERE permission_id = 57))
END
你' NOT EXISTS'子查詢不以任何方式與外部查詢相關。 –