如果表仍在使用中,如何限制其被删除

时间:2018-09-27 13:51:04

标签: sql sql-server

如果在某些视图中使用了表的任何列,是否可以限制删除表? 如果是,那么请建议我如何?

谢谢

2 个答案:

答案 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;