如果在某些视图中使用了表的任何列,是否可以限制删除表? 如果是,那么请建议我如何?
谢谢
答案 0 :(得分:5)
创建View(和某些其他对象,例如Function 1 )以指定package main
import (
"fmt"
"github.com/wulijun/go-php-serialize/phpserialize"
)
func main() {
rules := RulesList()
for _, rule := range rules{
fmt.Println(rule.Conditions.(interface{}))
}
}
type Rule struct {
RuleId int `json:"rule_id"`
Conditions interface{} `json:"conditions"`
}
func RulesList() ([]Rule) {
db := DbConn()
res, err := db.Query(`SELECT r.rule_id, r.conditions_serialized AS
conditions FROM m_feedexport_rule AS r`)
CheckError(err)
rule := Rule{}
rules := []Rule{}
for res.Next() {
var ruleId int
var conditions string
err = res.Scan(&ruleId, &conditions)
CheckError(err)
cons, err := phpserialize.Decode(conditions)
CheckError(err)
rule.RuleId = ruleId
rule.Conditions = cons
rules = append(rules, rule)
}
return rules
}
时有一个选项。
只要存在至少一个指定了此选项并引用表的视图,您就无法删除该表。
如果您习惯于在可能的情况下(即针对所有此类对象)指定此选项,那么您将获得所需的内容。
但是,无法从“表端”进行指定。
1 但是, grr 仅适用于本机编译的stored procedure。对于非本地编译的过程,我们仍然不得不忍受延迟名称解析的规则,甚至没有可用的退出选项。
答案 1 :(得分:-2)
尝试:
DENY DELETE ON OBJECT::dbo.table_to_deny TO restricted_user;